others - PHP将对象实例分配给静态属性不能工作

我使用Laravel,得到new关键字的错误,

错误:


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());


 }



}



谢谢!

时间:

不能在属性声明中使用new,你必须设置它,

最好是这样:


public static function getUser() {


 if (self::$user == null) self::$user = new Fb();


 return self::$user;


}



然后始终通过检索静态属性

 
self::getUser()



只能用基本类型初始化成员变量。

必须在类声明之后分配给静态变量,或者提供一个类级别的init方法,或者提供执行赋值的类似方法。


class User extends Eloquent {


 public static $user = null;



}



User::$user = new Fb();



你拥有全局状态和静态方法,这很糟糕,


class User extends Eloquent


{


 public static $user = new Fb();



 public function mySnippets(){


 return Snippet::all()->where('author','=',self::$user->getUser());


 }



}



这是错误的,在OOP方面,这应该类似于这个:


class User extends Eloquent


{


 private $fb;



 public function __construct(FB $fb)


 {


 $this->fb = $fb;


 }



 public function mySnippets()


 {


 return Snippet::all()->where('author', '=', $this->user->getUser());


 }


}



//Usage:



$fb = new FB();


$user = new User($fb);



var_dump($user->mySnippets());



...