如何在模型中创建新的公共方法?

时间:2014-06-22 22:34:24

标签: php laravel laravel-4

我开始使用Laravel 4,我希望创建一个注册功能。

在这个功能中,我希望有一个像

这样的方法
User::is_active()

所以我可以检查数据库中是否存在confirmation_token。

在我的用户模型中,我正在创建:

public static function is_active(){
    return empty($this->confirmation_token);
}

显然,我不能在静态方法中使用$ this。 但是我如何使用User::is_active()声明?

2 个答案:

答案 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上实施更强大的功能。