PHP:可以为对象属性分配函数,但是那些不能被调用?

时间:2015-02-01 20:16:56

标签: php lambda

使用此代码重现

<?php
$justReturn1 = function() { return 1;};

class A {
        public $f;
        public function __construct($func) {
                $this->f = $func;
        }
}

$instance = new A($justReturn1); // Create instance

$f = $instance->f; // Assign the function within $instance->f to a variable external to object

echo $f(); // Returns: 1
echo $instance->f(); // Returns: Fatal error: Call to undefined method A::f()

如果将其分配给变量,则可以调用相同的函数,但如果将其分配给对象属性则无法调用。

这真的很烦人,因为我一直指望这种一致性(常识)。

我正在编写一个接收大型配置数组的类,其中包含一些验证函数。然后我将这些验证函数存储在一个对象上就好了,但我需要一个间接步骤(创建一个变量并为它分配这个函数),然后才能调用它们!

我的测试中有缺陷吗?这实际上是PHP未实现吗?

0 个答案:

没有答案