PHPで、他のメリットをforward_static_call_array()の代わりにcall_user_func_array()が動的に呼び出す静的方法は?
質問
具体的には、より効率的ではないのですか?
解決
あleat二つの違い forward_static_call_array
や call_user_func_array
:
- 最初に一つだけ存在するからPHP5.3
- 最初に呼び出す必要から内部クラス
その後、仮に多少違いがありますのでそれに関連し遅めの静的結合が導入されたリリースでは以下のセキュリティ5.3.
で、良かったですが、実は、よく見てください指定された例のようで、このコンテキストのクラス内で使っている forward_static_call_array
は"保管"、という方法です。
この部分のコードを、それから、指定されたとえば:
class A {
const NAME = 'A';
public static function test() {
$args = func_get_args();
echo static::NAME, " ".join(',', $args)." \n"; // Will echo B
}
}
class B extends A {
const NAME = 'B';
public static function test() {
echo self::NAME, "\n"; // B
forward_static_call_array(array('A', 'test'), array('more', 'args'));
}
}
B::test('foo');
しょこの出力:
B
B more,args
すなわちメソッドからのクラスA、知識として知っているとか、、、 static::
キーワードにいること"から少なくしたいときに使います
ろうとした場合に同じものと call_user_func
:
class B extends A {
const NAME = 'B';
public static function test() {
echo self::NAME, "\n"; // B
call_user_func_array(array('A', 'test'), array('more', 'args'));
}
}
(他のコードを変更しません)
しょこの出力:
B
A more,args
注意 A 第二!と forward_static_call_array
, すべてを取得し A, ものの、 B.
この違い: forward_static_call_array
前の静的コンテキストの方法をされているが、 call_user_func_array
は来ない。
つ効率の質問:わたしにはわかりません--いベンチマーク;そうでない点:という二つの機能なので同じものだと言ってもいいです。
所属していません StackOverflow