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

Php 如何在模型中创建新的公共方法?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我开始使用Laravel 4,我希望创建一个注册功能 在这个功能中,我想要一个类似 User::is_active() 因此,我可以在DB中检查确认令牌是否存在 在我的用户模型中,我正在创建: public static function is_active(){ return empty($this->confirmation_token); } 显然,我不能在静态方法中使用$this。 但是如何使用User::is_active()语句?在您的情况下,不应该使用静态方法。在

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

在这个功能中,我想要一个类似

User::is_active()
因此,我可以在DB中检查确认令牌是否存在

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

public static function is_active(){
    return empty($this->confirmation_token);
}
显然,我不能在静态方法中使用$this。
但是如何使用
User::is_active()
语句?

在您的情况下,不应该使用静态方法。在OOP中,如果静态方法在概念上不属于某个实例,或者不需要访问实例成员,则需要使用静态方法

也就是说,您应该使用实例方法(不带static关键字):

然后调用该方法,执行以下操作:

$user = User::first(); // or any logic to find a user.
$active = $user->is_active();

您需要访问实例成员:
$this->confirmation\u token
这一事实清楚地表明,您不需要静态方法,而需要实例方法


快乐编码

在我看来,您似乎在寻找一个会话。但是,不要使用令牌检查用户。如果您使用的是内置令牌,它将始终返回true,因为即使是刚访问该网站的用户,也会设置为true。您很可能希望将用户名之类的内容设置为

 Session::put('username', 'test');
然后,您可以使用

Session::get('username');

我建议您也考虑一下这一点,因为您很可能希望根据您的应用程序所包含的信息来实现更强大的功能。

此令牌仅用于电子邮件确认。当我说“用户处于活动状态”时,我的意思是“用户已经确认了他的电子邮件”。:)不用担心。谢谢你的回答。
Session::get('username');