【发布时间】:2013-03-25 12:04:08
【问题描述】:
我正在使用 Laravel,但 new 关键字出现错误。我还是 OOP 概念的新手,我做错了什么?
错误:
Line 3: syntax error, unexpected 'new' (T_NEW)
代码:
class User extends Eloquent{
public static $user = new Fb();
public function mySnippets(){
return Snippet::all()->where('author','=',self::$user->getUser());
}
}
谢谢!
【问题讨论】:
-
这很重要。至于非静态属性,您需要在每个对象中创建一个新的属性实例。因此,您可以在构造函数中分配它。至于静态属性,您希望所有对象都具有相同的实例(并且您希望它们在没有创建对象的情况下可用)。因此,您不能使用相同的解决方案。
-
@Aufziehvogel 答案略有不同,但这两个问题都是由于没有注意到manual page 中的以下内容:“此声明可能包含初始化,但此初始化必须是常量值。” IMO 的最佳答案将涵盖这两种情况并证明欺骗声明的合理性。