语法错误,意外'(',期待')'

我正在使用Laravel 4开发一个站点。我在我的一个模型中使用了这段代码:

class MyModel extends Eloquent {
    protected $var = array(
        "label" => Lang::get("messages.label"),
        "code" => "myCode",
    );
    ...
}

但是我在使用Lang::get的行上给出了这个语法错误:

syntax error, unexpected '(', expecting ')'

然后我改变了我的代码:

class MyModel extends Eloquent {
    protected $var;

    public function __construct() {
        $this->var = array(
            "label" => Lang::get("messages.label"),
            "code" => "myCode",
        );
    }
}

错误消失了! 我认为这个错误是非常混乱和无益的。 为什么PHP显示此错误消息?


这是因为您在定义类属性时使用Lang::get() ,这是不允许的。 调用像静态方法的东西只能在运行时(代码执行时)完成。

在定义类时,它们的属性只能是非变量(或“常量”)值(例如整数,字符串或数组本身只包含非变量值)。

运行时代码应该放入构造函数中。


这个问题是因为你在调用Lang :: get的时候调用了这个函数,当初始化你的class属性时,这个函数的默认值只能是常量值。

您正确地在构造函数中初始化这些属性。

链接地址: http://www.djcxy.com/p/9963.html

上一篇: syntax error, unexpected '(', expecting ')'

下一篇: No visible cause for "Unexpected token ILLEGAL"