我在我的 Codeigniter 包中安装了一个 Tank Auth 库,问题是我不喜欢如何is_logged_in
调用函数,因为它很长而且不太友好,因为我需要使用:
$this->tank_auth->is_logged_in()
每次我想检查用户是否登录......那么有没有办法让它更短?通过说更短,我的意思是像$this->logged();
?
如果有人可以帮助我,我将不胜感激。
谢谢你。
我在我的 Codeigniter 包中安装了一个 Tank Auth 库,问题是我不喜欢如何is_logged_in
调用函数,因为它很长而且不太友好,因为我需要使用:
$this->tank_auth->is_logged_in()
每次我想检查用户是否登录......那么有没有办法让它更短?通过说更短,我的意思是像$this->logged();
?
如果有人可以帮助我,我将不胜感激。
谢谢你。
进入tank_auth
库并定义一个新的公共函数:
public function logged(){
return $this->is_logged_in();
}
您现在可以使用$this->tank_auth->logged();
如果要缩短 的名称tank_auth
,则必须重命名类和文件名。
更重要的问题是,你为什么这么多次调用它,以至于它变得很烦人?如果您的代码遵循 Don't Repeat Yourself (DRY) 原则,您应该只需要编写一次。
查看 Phil Sturgeon 题为Keeping It DRY的博文。他将向您展示如何编写一个基础控制器,您的所有控制器都将从中继承。如果在基本控制器的构造函数中编写登录检查,则不必在每个控制器中都编写它。
我反对这样做,因为logged()
您实例中的方法缺乏上下文。但是,如果您想这样做,您可以编写一个基本控制器,该控制器具有一个logged()
最终返回的方法$this->tank_auth->is_logged_in()
。所有控制器都将从这个基本控制器继承,这不是一个坏主意。
如果您使用库,则可以在其中实现类似的模式。
TankAuth
如果您没有创建库,您可能不想编辑库中的任何内容,因为这样做会影响库的可更新性。相反,您可以向控制器添加一个名为的方法,logged
并让它与 Tank Auth 联系。虽然,正如前面的答案所指出的,我会为您的函数选择一个更好的名称。
创建或编辑您的控制器基类以具有如下内容:
function is_logged() {
return $this->tank_auth->is_logged_in();
}
然后你可以这样称呼它:$this->is_logged();