はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。
クラス-メソッドと疑似変数$this-
処理内容
MathOperationクラスに定義されているaddメソッドを呼び出す。addメソッドの引数には、それぞれプロパティの値とprocessメソッドに渡された引数の値を使用する。
解答・解説 のサンプルソース
変数名など一部変更しています。
class MathOperation
{
public $value = 10;
function add($value1, $value2)
{
echo $value1 . ' + ' . $value2 . ' = ' . ($value1 + $value2) . "\n";
}
// process メソッドを追加
function process($value)
{
$this->add($this->value, $value);
}
}
$operation = new MathOperation();
$operation->process(5);
出力結果
10 + 5 = 15
疑問点
$value
の種類が多すぎて訳が分からない
public $value = 10;
function process($value)
$this->add($this->value, $value);
順番に見ていきましょう
- クラスの中で一番初めに定義されていますが、
public $value = 10;
これはそのまんま$value
の値は10
。
- 次の
$value
の値は
function process($value)
$operation->process(5);
で引き渡された5
が入ります。
- 一番ややこしいのが↓の
$this->value
と$value
という2つの引数。
$this->add($this->value, $value);
$this->value
のvalue
はこのクラスの中で定義された$value
が入るので10
。
$value
の方には$operation->process(5);
で引き渡された5
が入ります。
なので、引数にはこのような値↓が入っていることになります。
$this->add(10, 5);
引数を代入する
計算式のadd関数(メソッド)に先ほどの引数を入れます。
$value1
に10
$value2
に5
function add(10, 5)
{
echo 10. ' + ' . 5 . ' = ' . (10 + 5) . "\n";
}
出力結果
10 + 5 = 15
function process($num
)←ここの変数と
{
$this->add($this->value, $num
);←2つ目の引数は同じ
}
変数名を変えると分かりやすい
まとめ
同じ変数名を使った問題が多くてややこしいから、どれとどれが同じものか分けて考えて、変数名を変更するのも手。