在php中声明属性时,为什么不能将属性初始化为函数?以下snippit导致Parse错误:语法错误,意外T_FUNCTION
<?php
class AssignAnonFunction {
private $someFunc = function() {
echo "Will Not work";
};
}
?>
Run Code Online (Sandbox Code Playgroud)
您可以将属性初始化为字符串,数字或其他数据类型吗?
编辑:
但我可以在__construct()方法中为属性分配一个函数.以下工作:
<?php
class AssignAnonFunctionInConstructor {
private $someFunc;
public function __construct() {
$this->someFunc = function() {
echo "Does Work";
};
}
}
?>
Run Code Online (Sandbox Code Playgroud)
Ant*_*nna 20
因为它没有在PHP中实现.
http://www.php.net/manual/en/language.oop5.properties.php.引用:
它们(属性)通过使用关键字public,protected或private之一定义,然后是常规变量声明.此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.
您无法初始化此类属性,函数不是常量值.因此,我的原始答案"它没有实施".
为什么没有实施?我只能猜测 - 它可能是一项相当复杂的任务,没有人加紧实施它.和/或可能没有足够的需求这样的功能.
| 归档时间: |
|
| 查看次数: |
5468 次 |
| 最近记录: |