我正在为Code Igniter编写一个身份验证库(为了练习,所以请不要建议例如Tank Auth或DX Auth)。
该库具有基本的登录功能,它还具有Facebook和Twitter登录功能。
然而,Facebook和Twitter登录代码被硬编码到库中。这意味着如果我决定添加例如谷歌登录我必须修改库的核心。我不喜欢这个。
我想知道我可以通过哪些方式使图书馆可扩展,以便Facebook和Twitter登录是可以添加的“模块”。
通过这种方式,有人可以为Google登录编写模块,并且不需要修改系统的核心。
如何在代码点火器中创建可扩展库?
答案 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,你可以从中学到很多东西!