-2

PHP 真的支持lambdas吗?

<?php

class ExampleClass
{
    public $variable = array(
        "example"   =>  function( $str )
        {
            return str_replace("a","-",$str);
        }
    );
}
?>

错误:

解析错误:语法错误,第 6 行 /var/www/test.php 中的意外“函数”(T_FUNCTION)

我知道我可以使用create_function,但我讨厌它...

4

1 回答 1

5

问题要简单得多——您不能使用复杂的表达式来初始化类属性。您可以将其设置为常量值,但不能将其设置为函数调用、函数创建等。

看这里: http: //php.net/manual/en/language.oop5.properties.php

进一步解释 - 此代码不起作用,因为您正在尝试variable使用匿名函数初始化属性:

<?php
class ExampleClass
    {
    // fails because of complex expression
    public $variable = array(
        "example" => function($str) { return str_replace("a", "-", $str); }
        );
    }

如果您希望该属性保存函数句柄,请按如下方式更改您的代码:

<?php
class ExampleClass
    {
    // might be left uninitialized as well
    public $variable = null;

    public function __construct()
        {
        // now object context is initialized
        // so you can perform complex actions on it
        $this->variable = array(
            "example" => function($str) { return str_replace("a", "-", $str); }
            );
        }
    }
于 2013-10-09T08:11:16.407 回答