为什么在php类中作为数组项的函数不起作用

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对不起,我在调用方法时犯了一些错误,我很着急.但不管我怎么称呼.即使我只是在没有调用的情况下声明类,也会出现错误

Rud*_*ser 3

据我所知,在定义类成员时不能有任何动态内容,但是可以如下动态设置它。所以基本上,你不能这样做的原因与你不能这样做的原因相同: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()(因此基本上会改变您的代码)。