Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Расширяет плагин cakephp

Автор вопроса: litoОтветов: 1

Я использую плагин spark_plug на cakephp, этот плагин обеспечивает систему аутентификации-acl для регистрации и администрирования пользователей в cakephp. Я хочу добавить новый код и функции в пользовательский контроллер, но я не хочу менять "основные" файлы плагинов.

Я подумал, можно ли оставить "основной" контроллер плагина как он (без изменений) "\app\plugins\spark_plug\controllers\users_controller.php" и создать дополнительный контроллер со всем новым кодом и функциями, что-то вроде этого " \app\controllers\users_controller.php" и расширяет "основной" контроллер плагина.

Это возможно? и как этого добиться?

Или вы думаете, есть ли другой способ сделать то, что я хочу?

Спасибо!

cakephp

Ответы

Ответ 1 · Sc0ttyD

Возможно, вы могли бы использовать композицию, а не наследование? т.е. создайте "app\controllers\users_controller", внутри которого находится экземпляр контроллера плагина. UsersController передает любые немодифицированные действия через заглушки, например:

class UsersController extends AppController {

   ...

   var spark_plug_users_controller;

   ...

   public function __construct() {
    parent::__construct();

    App::import('Controller', 'SparkPlug/Users'); // this is probably wrong.
        $this->spark_plug_users_controller = new UsersController; // as is this.
        $this->spark_plug_users_controller->constructClasses();
   }

   ...

   //example non-overridden method
   function login() {
      return $this->spark_plug_users_controller->login();
   }

   ...

}

ваша проблема будет заключаться в доступе к защищенным/приватным методам в контроллере пользователей spark_plug. Но если вам это не нужно, это может сработать.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы