Lar*_*bar 5 php arrays class function
例如,我有这样的代码:
<?php
$A = array(
'echoSmth' => function(){
echo 'Smth';
}
);
$A['echoSmth'](); // 'Smth'
?>
Run Code Online (Sandbox Code Playgroud)
它工作正常!但是如果$ A不仅仅是一个变量,而是一个Class方法 - 那么这不起作用:
<?php
class AA {
public $A = array(
'echoSmth' => function(){ // Parse Error here!
echo 'Smth';
}
);
}
// Fixed call:
$t = new AA();
$t->A['echoSmth']();
// no matter what call, because error occurs early - in describing of class
?>
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?它显示:
Parse error: syntax error, unexpected T_FUNCTION
PS对不起,我在调用方法时犯了一些错误,我很着急.但不管我怎么称呼.即使我只是在没有调用的情况下声明类,也会出现错误
据我所知,在定义类成员时不能有任何动态内容,但是可以如下动态设置它。所以基本上,你不能这样做的原因与你不能这样做的原因相同:public $A = functionname();
另外,您的呼叫签名不正确,我已在示例中修复了它。
<?php
class AA {
public $A = array();
public function __construct() {
$a = function() {
echo 'Smth';
};
$this->A['echoSmth'] = $a;
}
}
$t = new AA();
$t->A['echoSmth']();
Run Code Online (Sandbox Code Playgroud)
或者,您可以在 中定义包含该方法的整个数组__construct()(因此基本上会改变您的代码)。