static array
クラスのプロパティに無名関数を格納しようとしています。これらの関数は、後でインデックスによって呼び出す必要がありますが、
self::$arr['index']()
ただ動作しませんが
$a = self::$arr['index'];
$a();
します!
これは機能しません:
class A {
private static $func = array('a' => '');
public function __construct() {
self::$func['a'] = create_function('$str', 'echo "$str";');
}
public function go($str) {
self::$func['a']($str); // Call the function directly
}
}
$a = new A();
$a->go("hooray"); // Outputs "Undefined variable: func"
しかし、これはします:
class A {
private static $func = array('a' => '');
public function __construct() {
self::$func['a'] = create_function('$str', 'echo "$str";');
}
public function go($str) {
$a = self::$func['a']; // Pass the function name to a variable
$a($str); // Call the function via the variable
}
}
$a = new A();
$a->go("hooray"); // Outputs "hooray"
なんで?
PHPバージョン5.4.3を使用しています