【问题标题】:Code igniter extensible system?代码点火器可扩展系统?
【发布时间】:2011-10-11 20:23:04
【问题描述】:

我正在为 Code Igniter 编写一个身份验证库(为了练习,所以请不要建议,例如 Tank Auth 或 DX Auth)。

该库具有基本登录功能,还具有 Facebook 和 Twitter 登录功能。

但是,Facebook 和 Twitter 登录代码是硬编码到库中的。这意味着如果我决定添加例如Google Logins 我要修改库的核心。我不喜欢这个。

我想知道有什么方法可以使库可扩展,以便 Facebook 和 Twitter 登录成为可以添加的“模块”。

通过这种方式,人们也可以为 Google 登录编写一个模块,而不必修改系统的核心。

如何在代码点火器中制作可扩展库?

【问题讨论】:

    标签: php codeigniter libraries extensibility codeigniter-2


    【解决方案1】:

    这听起来像 codeigniter 中的驱动程序非常适合这项任务。看看文档:http://codeigniter.com/user_guide/general/creating_drivers.html

    【讨论】:

    【解决方案2】:

    基本上你需要抽象类(结帐http://nl2.php.net/manual/en/language.oop5.abstract.php

    在这种特殊情况下,你会写这样的东西;

    class Auth {
        abstract function login() {}
        abstract function logout() {}
    }
    class Twitter_Auth extends Auth {
        function login() { // the login magic }
        function logout() { // the logout magic }
    }
    
    if($login_type == 'twitter') {
        $auth = new Twitter_Auth();
    } else {
        $auth = new Basic_Auth();
    }
    $auth->login();
    

    --- 编辑 您可能对 kohana 如何处理这种类型的扩展感兴趣,例如。 auth 模块有几个驱动程序。结帐http://kohanaframework.org/3.2/guide/api/Auth,你可以从中学到很多东西!

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 2011-06-04
      • 2016-01-28
      • 2012-06-30
      相关资源
      最近更新 更多