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

标签 php arrays class function

比如我有这样一段代码:

<?php
$A = array(
    'echoSmth' => function(){ 
        echo 'Smth';
    }
);

$A['echoSmth']();  // 'Smth'
?>

效果很好! 但是,如果 $A 不仅仅是一个变量,而是一个类方法——那么这将不起作用:

<?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

?>

为什么不起作用? 它显示: 解析错误:语法错误,意外的 T_FUNCTION

附言抱歉,我在调用方法时犯了一些错误,我很着急。但是不管我怎么叫。即使我只是声明类,而不调用,也会发生错误

最佳答案

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

或者,您可以在 __construct() 中定义整个数组,其中包含该方法(这样基本上可以转移您的代码)。

关于php - 为什么在 php 类中用作数组项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842566/

相关文章:

c# - 如何填充三维数组

java - 模型类和外部库最佳实践

php - PHP处理哪个更快/更容易在PHP中使用; XML 或 JSON,以及 file_get_contents 或 cURL?

将 char 数组转换为 atoi 失败

javascript - 谷歌表格/Javascript : Unable to search for a specific string in an array using indexOf()

c# - 在 Unity 中存储只读数据的良好实践

python - 是否可以重载 Python 赋值?

php - 如何在laravel中选择特定的列

php - 无法让 Laravel 4 在本地主机上工作

php - 在 php 中显示 GMT 时区