繁体   English   中英

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

[英]How to create a new public method in a model?

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

在这个功能中,我希望有一个类似的方法

User::is_active()

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

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

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

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

在您的情况下,您不应该使用静态方法。 在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清楚地表明您不需要静态方法,而是实例方法。

快乐的编码!

在我看来,你似乎想要设置一个会话。 但是,请勿使用令牌来检查用户。 如果您使用内置令牌,它将始终返回true,因为即使刚刚访问该网站的用户也设置了该令牌。 你很可能想要设置像用户名一样的东西

 Session::put('username', 'test');

然后你可以检查一个活跃的用户

Session::get('username');

我建议您查看http://laravel.com/docs/security ,因为根据您的应用程序将保留的信息,您很可能希望在rode上实现更强大的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM