Codeigniter库中的短函数

时间:2012-09-10 22:36:38

标签: php codeigniter tankauth

我在Codeigniter包中安装了一个Tank Auth库,问题是我不喜欢如何调用is_logged_in函数,因为它只是很长而且不太友好,因为我需要使用:

$this->tank_auth->is_logged_in()

每次我想检查用户是否已登录... 有没有办法缩短它?通过说更短我的意思是$this->logged();

如果有人能帮助我,我真的很感激。

谢谢。

3 个答案:

答案 0 :(得分:2)

进入tank_auth库并定义一个新的公共函数:

public function logged(){
    return $this->is_logged_in();
}

您现在可以使用$this->tank_auth->logged();

访问它

如果您想缩短tank_auth的名称,则必须重命名该类和文件名。

UPDATE:

更重要的问题是,你为什么这么多次打电话让它变得烦恼?如果您的代码遵循不要重复自己(DRY)原则,则只需编写一次。

看看Phil Sturgeon的博客文章Keeping It DRY。他将向您展示如何编写所有控制器将继承的基本控制器。如果在基本控制器的构造函数中编写登录检查,则不必在每个控制器中编写它。

答案 1 :(得分:0)

我反对这样做,因为你实例中的方法logged()缺少上下文。但是,如果您想这样做,您可以编写一个基本控制器,它具有logged()方法,最终返回$this->tank_auth->is_logged_in()。所有控制器都将从这个基本控制器继承,这不是一个坏主意。

如果您正在使用库,则可以在其中实现类似的模式。

答案 2 :(得分:0)

如果你没有创建它,你可能不想编辑TankAuth库中的任何内容,因为这样做会影响库的可更新性。相反,您可以向控制器添加一个名为logged的方法,并让它与Tank Auth联系。虽然,我会为你的功能选择一个更好的名称,如前一个答案所指出的那样。

创建或编辑控制器基类,使其具有以下内容:

function is_logged() {
   return $this->tank_auth->is_logged_in();
}

然后你可以这样称呼:$this->is_logged();