Код воспламенитель расширяемой системы? - PullRequest
1 голос
/ 12 октября 2011

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 12 октября 2011

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

0 голосов
/ 12 октября 2011

В основном вам понадобятся абстрактные классы (оформить заказ 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();

--- edit, который может вас заинтересоватькак kohana обрабатывает этот тип расширения, например, модуль auth имеет несколько драйверов. Оформление заказа http://kohanaframework.org/3.2/guide/api/Auth, Вы можете многому научиться из этого!

...