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 つ登録します。