我开始使用Laravel 4,我希望创建一个注册功能。
在这个功能中,我希望有一个像
这样的方法User::is_active()
所以我可以检查数据库中是否存在confirmation_token。
在我的用户模型中,我正在创建:
public static function is_active(){
return empty($this->confirmation_token);
}
显然,我不能在静态方法中使用$ this。
但是我如何使用User::is_active()
声明?
答案 0 :(得分:3)
在您的情况下,您不应使用静态方法。在OOP中,当概念上不属于某个实例,或者当您不需要访问实例成员时,您希望使用静态方法。
说,你应该使用实例方法(没有 static 关键字):
public function is_active()
{
return empty($this->confirmation_token);
}
然后,您将调用该方法执行以下操作:
$user = User::first(); // or any logic to find a user.
$active = $user->is_active();
您需要访问实例成员的事实:$this->confirmation_token
清楚地表明您不需要静态方法,而是实例方法
快乐的编码!
答案 1 :(得分:0)
在我看来,你似乎想要设置一个会话。但是,请勿使用令牌来检查用户。如果您使用内置令牌,它将始终返回true,因为即使刚刚访问该网站的用户也设置了该令牌。您很可能希望设置像
这样的用户名 Session::put('username', 'test');
然后您可以使用
检查活跃用户Session::get('username');
我建议您同时查看http://laravel.com/docs/security,因为根据您的应用所持有的信息,您很可能希望在rode上实施更强大的功能。