LoginSignup
1
0

PHPの参照渡し方法

Last updated at Posted at 2024-05-01

PHPの参照渡し方法

参照渡しについて説明しているサイトは下記のようなプログラムの書き方をしています。

<?php

$message = "php";
rewrite($message);
print($message);

function rewrite(&$args) {
	$args = "TestMessage";
}
?>

これでTestMessage と出力されます。
$message を直接変更していないのに、rewrite関数 内での変更が $message に対して有効になります。
関数の引数に & をつけなければ、上書きされることはありません。

次に、変数代入の参照渡しを説明します。

変数代入の参照渡し

<?php

$message = "php";
$b = & $message;
$b = "TestMessage";
print($b);
?>

これは、TestMessge と出力されます。
2行目で $message の持つ参照先が $b に渡されているため、$message の変更と $b の変更は同義となっています。

関数の戻り値の参照渡し

<?php
class TestMessage {
	var $val = "message";
	
	function &getValue() {
		return $this->val;
	}
}

$message = new TestMessage();
$a = & $message->getValue();
$a = "HelloWorld!";
print($message->val);
?>

これは、HelloWorld と出力されます。
関数 &getValue&メソッド 実行に戻り値 =&$message->getValue(); のどちらかの & が抜けても参照渡しにはなりません。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0