7. サンプルプログラムその1
function 関数名 ($ 引数 A, $ 値 A) {
$ 引数 A = $ 値 A;← このタイミングで値のコピーが行われるので、この行の処理に時間がかかる
return $ 引数 A;
}
function 関数名 ($ 引数 A, $ 値 A) {
$ 変数 A = $ 引数 A;← この場合は、値を変更していないので、値のコピーは行われず、時間もかからない
return $ 変数 A;
}
function 関数名 ($ 引数 A, $ 値 A) {
$ 変数 A = $ 引数 A;
$ 変数 A = $ 値 A;← これでも引数 A の値のコピーが行われる。変数 A と引数 A で同じメモリ領域を見てる?
return $ 変数 A;
}
8. サンプルプログラムその2
class クラス名 {
public function メソッド名 ($ 引数 A, $ 値 A) {
$ 引数 A = $ 値 A;← メソッドにしても所詮は値渡しされた引数の中身を変えているので結果は変わらない
return $ 引数 A;
}
}
$ 変数 A = 値 B;
$ 変数 B = new クラス名 ();
$ 変数 A = 変数 B-> メソッド名 ($ 変数 A, 値 C);
9. サンプルプログラムその3
class クラス名 {
public function コンストラクタ () { $this->init(); }
public function init() { $this->set_ 変数 A(null); }
public function set_ 変数 A($ 変数 B) { $this-> 変数 A = $ 変数 B; }
public function get_ 変数 A() { return $this-> 変数 A; }
public function メソッド名 ($ 値 A) { $this-> 変数 A = $ 値 A; }
private $ 変数 A;
}
$ 変数 C = new クラス名 ();
$ 変数 C->set_ 変数 A( 値 B);
$ 変数 C-> メソッド名 ( 値 C);
// 値を取得したければ「 $ 変数 C->get_ 変数 A() 」
値渡ししていても、その引数の中身を操作していないので問題ない