【发布时间】:2012-02-24 01:59:05
【问题描述】:
可能重复:
Workaround for basic syntax not being parsed
Why don't PHP attributes allow functions?
我来了
解析错误:语法错误,第 87 行 /home/codemonkey/dev/broadnet/bito.api2/broadnet/resources/broadmapresource.php 中的意外 T_FUNCTION
从此代码:
private $debugFunctions = array(
"testing" => function() // Line 87
{
return "I'm a test function!";
},
"foo" => function()
{
return "bar";
}
);
我的印象是我可以在任何可以使用$variables 的地方使用匿名 PHP 函数。这是一个例外,还是我做错了什么?
我使用的是 PHP 5.3.9
【问题讨论】:
-
我猜是因为它在一个类中,并且与此相关:Why don't PHP attributes allow functions? 它是否在类外的普通数组中工作?这散发着 PHP 设计缺陷的味道……但是,函数还不是 PHP 中真正的一等公民
-
你试过在构造函数中而不是直接在类定义中做这个赋值吗?
-
像往常一样:运行时信息不能在运行前分配给属性。 Lambda 是 Closure 类的实例。您也不能将实例作为声明的属性。如果你想要 lambdas,你必须从 ctor 中添加它们。
-
@Czech 这肯定会奏效,但他展示的方式可以说会更好。真糟糕,不能这样做
-
我认为有人在跟踪我并否决我所有的问题。他们没有那么愚蠢。