ホームページ >バックエンド開発 >PHPチュートリアル >call_user_func_array とリファレンスに関するコードがわかりません。

call_user_func_array とリファレンスに関するコードがわかりません。

WBOY
WBOYオリジナル
2016-06-23 14:02:48944ブラウズ

class PbObject{		var $params;	var $fontFace = 'incite.ttf';	function Object() {		$args = func_get_args();		if (method_exists($this, '__destruct')) {			register_shutdown_function (array(&$this, '__destruct'));		}		call_user_func_array(array(&$this, '__construct'), $args);	}		function __construct(){}			function toString() {		$class = get_class($this);		return $class;	}}



このコードでは、 call_user_func_array(array(&$this, '__construct'), $args); なぜ $this の前に参照文字 & が付いているのでしょうか?私はそのようなコードを理解したことがありません。 &を付けずに独自の__constructメソッドを呼び出すことはできないのでしょうか?追加するとどんな効果があるのでしょうか?


ディスカッション(解決策)に返信

call_user_func_array によって呼び出される関数がクラスメソッドの場合、配列を使用してクラス (オブジェクト) とメソッド名の両方を渡す必要があります
$this がオブジェクトです
php4 では、オブジェクトはデフォルトで値によって渡され、参照宣言 (&) がない場合、実際には別のオブジェクトで実行されます。メソッド内でクラス属性が変更された場合、この変更は影響を与えません。呼び出し元自体
php5では、オブジェクトはすべて参照によって渡されるので、それを呼び出す必要はありません

それは私が学んだバージョンに関連していることがわかりました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。