使用匿名函数时的未定义方法

时间:2015-03-10 13:52:11

标签: php

PHP返回Call to undefined method stdClass::fragmentr()以获取以下代码:

$core = new \StdClass;

$core->fragmentr = function($frag) {
    $path = sprintf("fragments/%s.php", $frag);

    if(is_file($path)) {
        include $path;
    } else {
        header("Location: ./?p=500");
        exit;
    }
}

/* SNIP */

$core->fragmentr('header');

但是,函数$ core-> fragmentr明确定义为分配给变量的匿名函数。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为您的stdClass没有名为fragmentr的方法,但它有一个名为fragmentr的属性,因此您可以执行以下操作:

$property = $core->fragmentr;
$property("header"); 

您无法直接调用Closure,因此您必须将其分配给变量,然后才能调用它