ホームページ > バックエンド開発 > PHPチュートリアル > call_user_func_array とリファレンスのコードがわかりません。教えてください。

call_user_func_array とリファレンスのコードがわかりません。教えてください。

WBOY
リリース: 2016-06-13 12:51:43
オリジナル
825 人が閲覧しました

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

class PbObject{<br />
	<br />
	var $params;<br />
	var $fontFace = 'incite.ttf';<br />
<br />
	function Object() {<br />
		$args = func_get_args();<br />
		if (method_exists($this, '__destruct')) {<br />
			register_shutdown_function (array(&$this, '__destruct'));<br />
		}<br />
		call_user_func_array(array(&$this, '__construct'), $args);<br />
	}<br />
	<br />
	function __construct(){}	<br />
	<br />
	function toString() {<br />
		$class = get_class($this);<br />
		return $class;<br />
	}<br />
}
ログイン後にコピー

について説明してください。

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

クラスオブジェクトを参照しますか? 引用 カテゴリ オブジェクト
-----解決策--------------------------------
call_user_func_array で呼び出される関数がクラスメソッドの場合、配列を使用してクラス (オブジェクト) とメソッド名の両方を渡す必要があります
あなたの $this がオブジェクトです
php4 では、オブジェクトはデフォルトで値によって渡されます。参照宣言 (&) がない場合、メソッド内でクラス属性が変更された場合、この変更は呼び出し元自体には影響しません。 > php5 では、オブジェクトは参照によって渡されるため、先頭に &
を付ける必要はありません。
コード内でクラス属性を宣言するには var を使用します。これは明らかに php4 スタイルです
php4 クラスにはデストラクターがないため、コードは register_shutdown_function を使用して
を 1 つ登録します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート