Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器可扩展系统?_Php_Codeigniter_Libraries_Extensibility_Codeigniter 2 - Fatal编程技术网

Php 代码点火器可扩展系统?

Php 代码点火器可扩展系统?,php,codeigniter,libraries,extensibility,codeigniter-2,Php,Codeigniter,Libraries,Extensibility,Codeigniter 2,我正在为CodeIgniter编写一个身份验证库(用于实践,因此请不要建议使用Tank Auth或DX Auth) 该库具有基本的登录功能,还可以登录Facebook和Twitter 然而,Facebook和Twitter的登录代码是硬编码到库中的。这意味着,如果我决定添加例如谷歌登录,我必须修改库的核心。我不喜欢这个 我想知道我可以用什么方法使这个库可以扩展,这样Facebook和Twitter登录就可以添加“模块” 通过这种方式,有人也可以为谷歌登录编写一个模块,而不必修改系统的核心 如何在

我正在为CodeIgniter编写一个身份验证库(用于实践,因此请不要建议使用Tank Auth或DX Auth)

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

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

我想知道我可以用什么方法使这个库可以扩展,这样Facebook和Twitter登录就可以添加“模块”

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


如何在CodeIgniter中创建可扩展库?

基本上,您需要抽象类(签出)

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

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模块有几个驱动程序。结帐,你可以从中学到很多

基本上,您需要抽象类(签出)

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

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模块有几个驱动程序。结帐,你可以从中学到很多

这听起来好像codeigniter中的驱动程序正适合此任务。查看文档:

这听起来像codeigniter中的驱动程序正适合此任务。查看文档:

是否有可能提供a)驱动程序和b)从父类调用驱动程序的示例?是否有可能提供a)驱动程序和b)从父类调用驱动程序的示例?