代码点火器可扩展系统?

时间:2011-10-11 20:23:05

标签: php codeigniter libraries extensibility codeigniter-2

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

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

然而,Facebook和Twitter登录代码被硬编码到库中。这意味着如果我决定添加例如谷歌登录我必须修改库的核心。我不喜欢这个。

我想知道我可以通过哪些方式使图书馆可扩展,以便Facebook和Twitter登录是可以添加的“模块”。

通过这种方式,有人可以为Google登录编写模块,并且不需要修改系统的核心。

如何在代码点火器中创建可扩展库?

2 个答案:

答案 0 :(得分:1)

这听起来像codeigniter中的驱动程序是适合此任务的。请查看文档:{​​{3}}

答案 1 :(得分:0)

基本上你需要抽象类(checkout 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,你可以从中学到很多东西!

相关问题