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

Chr*_*Gow 13 php

在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之一定义,然后是常规变量声明.此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

您无法初始化此类属性,函数不是常量值.因此,我的原始答案"它没有实施".

为什么没有实施?我只能猜测 - 它可能是一项相当复杂的任务,没有人加紧实施它.和/或可能没有足够的需求这样的功能.

  • 批评是当之无愧的,我改变了答案以获得更多细节. (2认同)