Php 使用匿名函数初始化类属性
为什么在php中声明属性时无法将属性初始化为函数?以下snippit导致分析错误:语法错误、意外的T_函数Php 使用匿名函数初始化类属性,php,Php,为什么在php中声明属性时无法将属性初始化为函数?以下snippit导致分析错误:语法错误、意外的T_函数 <?php class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; } ?> 但是您可以将属性初始化为字符串、数字或其他数据类型 编辑: 但是我可以在uu construct()方法中将函数分配给属性。以下方法确实有效: &
<?php
class AssignAnonFunction {
private $someFunc = function() {
echo "Will Not work";
};
}
?>
但是您可以将属性初始化为字符串、数字或其他数据类型
编辑:
但是我可以在uu construct()方法中将函数分配给属性。以下方法确实有效:
<?php
class AssignAnonFunctionInConstructor {
private $someFunc;
public function __construct() {
$this->someFunc = function() {
echo "Does Work";
};
}
}
?>
,因为它不是用PHP实现的 。引述: 它们(属性)是通过使用 关键词公共、受保护或 private,后跟一个正常变量 宣言。本声明可以 包括一个初始化,但是 初始化必须是常量 值——也就是说,它必须能够 在编译时计算,并且不能 依赖于中的运行时信息 要评估的订单 不能像这样初始化属性,函数不是常量值。因此,我最初的答案是“没有实施”
为何不实施?我只能猜测——这可能是一项相当复杂的任务,而且还没有人来实施它。和/或对这样的功能可能没有足够的需求。在PHP 5.3(最新版本)之前,闭包在PHP中不存在。如果您想这样做,请确保您有PHP5.3 在早期版本中,可以使用create_function()函数复制此功能,有点像这样:
$someFunc = create_function($args,$code);
$someFunc();
其中,$args是一个格式类似“$x、$y、$z”的字符串,$code是PHP代码的字符串。没有帮助或信息;为什么没有实现它的背景是什么?批评是当之无愧的,我改变了答案,让它有更多的细节。这在PHP5.3中。我已经用一个在PHP5.6中有效的例子更新了我的问题(我可以在_构造魔术方法中为属性分配一个函数)。OP中的语法不起作用,create_function()不是一回事