1. Aが出力される 2. Bが出力される 3. 実行時エラーで落ちる 4. syntax errorで実行できない PHP 4問目 namespace pixiv; // 以下のコードを実行するとどうなるでしょうか class A { public function __toString() { return B::class; } } class B { } $a = new A; $obj = new $a; echo get_class($obj);
1. Aが出力される 2. Bが出力される 3. 実行時エラーで落ちる 4. syntax errorで実行できない PHP 4問目 namespace pixiv; // 以下のコードを実行するとどうなるでしょうか class A { public function __toString() { return B::class; } } class B { } $a = new A; $obj = new $a; echo get_class($obj);
55 なぜ? ● スクリプト内で再定義された p メソッド内で使われている p は仮引数の p なので、このメ ソッドは無引数で呼ばれた場合には単に 42 を返すだけのメソッドとなります。 ● 括弧があるか引数の指定があればここで自分を再帰呼び出しするんですが、この場合は メソッド呼び出しではなく変数参照が優先されるんですね。 ● で、p p では、まず後ろの p の呼び出しが発生し、無引数なので 42 を返します。