2011-10-11 4 views
1

Я пишу библиотеку аутентификации для кода Igniter (для практики, поэтому, пожалуйста, не предлагайте, например, Tank Auth или DX Auth).Код воспламенитель расширяемая система?

Библиотека имеет базовые функции входа в систему, она также имеет возможность входа в Facebook и Twitter.

Однако код входа в Facebook и Twitter жестко закодирован в библиотеку. Это означает, что если я решил добавить, например, Google Logins Мне нужно изменить ядро ​​библиотеки. Мне это не нравится.

Мне интересно, каким образом я мог бы сделать библиотеку расширяемой, чтобы логины Facebook и Twitter были «Модулями», которые можно добавить.

Таким образом, кто-то может написать модуль для входа в систему Google, а ядро ​​системы не нужно будет изменять.

Как я могу сделать расширяемые библиотеки в воспламенителе кода?

ответ

1

Это звучит так, как будто драйверы в codeigniter подходят для этой задачи. Взгляните на документацию: http://codeigniter.com/user_guide/general/creating_drivers.html

+0

Вы можете указать пример a) драйвера и b) вызвать драйвер из родительского класса? – Hailwood

+1

[Полезное руководство по драйверам] (http://www.kevinphillips.co.nz/news/codeigniter-drivers-tutorial/) – Hailwood

0

В основном вы должны будете абстрактные классы (Кассовые 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, вы можете многому научиться!

Смежные вопросы