使用匿名函数初始化类属性

当你在php中声明属性的时候,为什么不可能初始化一个属性? 以下snippit导致一个分析错误:语法错误,意外的T_FUNCTION

<?php class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; } ?> 

然而,你可以初始化一个属性为string,数字或其他数据types?

编辑:

但是我可以将函数分配给__construct()方法中的属性。 以下工作:

 <?php class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } } ?> 

2 Solutions collect form web for “使用匿名函数初始化类属性”

因为它没有在PHP中实现。

http://www.php.net/manual/en/language.oop5.properties.php 。 引用:

它们(属性)通过使用关键字public,protected或private之一来定义,然后是一个正常的variables声明。 这个声明可能包括一个初始化,但是这个初始化必须是一个常量值 – 也就是说,它必须能够在编译时进行评估,并且不能依赖运行时信息来进行评估。

你不能像这样初始化属性,函数不是常量值。 因此,我原来的答复是“不实施”。

为什么不执行? 我只能猜测 – 这可能是一个相当复杂的任务,没有人加紧实施它。 和/或可能没有足够的需求这样的function。

在PHP 5.3(最新版本)之前,不存在闭包。 确保你有PHP 5.3如果你想这样做。

在较早的版本中,可以使用create_function()函数来重复此function,有点像这样:

 $someFunc = create_function($args,$code); $someFunc(); 

其中$ args是格式化为“$ x,$ y,$ z”的string,$ code是您的PHP代码的string。

  • 你如何启用mod_rewrite?
  • 在MySQL中获取表列名称?
  • 如何使用CSV MIMEtypes?
  • PhpStorm字段通过魔法访问
  • 我怎样才能禁用PHP的“复活节彩蛋”的url?
  • 在使用PDO的PHP中,如何检查最终的SQL参数化查询?
  • PHP:在foreach循环中获取数组中的键
  • 实用的Zend_ACL + Zend_Auth实现和最佳实践
  • 如何在Symfony2中设置表单字段的默认值?
  • 如何在Visual Studio中使用PHP
  • 如果redirect发生,如何获得file_get_contents之后的真实URL?