Автозагрузка плагина Zend Framework - PullRequest
2 голосов
/ 08 марта 2012

Я пытался написать плагин контроллера, который я буду использовать для аутентификации пользователя.Я написал плагин, и он должен работать, но я просто не понимаю, как загрузить плагин ... Я читал, что Zend Framework имеет много возможностей автозагрузки ..

Моя текущая структура каталогов:

domains
example.com
    Application
        configs
        controllers
            IndexController.php
            AuthController.php
            ErrorController.php
        forms
        layouts
            scripts
                layout.phtml
        models
        plugins
            AuthenticationPlugin.php
        views
            helpers
            scripts
                auth
                    login.phtml
                error
                    error.phtml
                index
                    index.phtml
        Bootstrap.php
    library
        Zend
    pubic_html
        .htaccess
        index.php

Кто-нибудь может мне помочь?

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Если ваш appnamespace равен Application_, тогда ваш класс плагина должен быть:

  1. с именем Application_Plugin_AuthenticationPlugin

  2. , хранящимся вфайл application/plugins/AuthenticationPlugin.php

  3. , зарегистрированный на фронт-контроллере с использованием чего-то вроде (в application/configs/application.ini):

    resources.frontController.plugins.auth = "Application_Plugin_AuthenticationPlugin"

2 голосов
/ 08 марта 2012

Вы можете создать свою собственную библиотечную папку с такой же структурой папок, как у Zend. Например (при условии вашего собственного пространства имен My_):

library
  My
    Controller  
      Plugin
        Authentication.php

Authentication.php будет содержать класс с именем My_Controller_Plugin_Authentication.

Затем вы зарегистрируете пространство имен в своей начальной загрузке ( manual ):

$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('My_');

В противном случае вы могли бы использовать приведенную выше структуру с помощью автозагрузчика ресурсов ( manual ). Zend Framework ожидает, что классы в этих папках также имеют префикс пространства имен, поэтому ваше имя класса будет Plugin_AuthenticationPlugin.

0 голосов
/ 08 марта 2012

Добавьте следующую строку, например, в файл Bootstrap:

Zend_Controller_Front::getInstance()->registerPlugin(new AuthenticationPlugin());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...