Zend Framework插件自动加载

时间:2012-03-07 21:17:10

标签: php zend-framework

我一直在尝试编写一个Controller插件,我将用它来进行用户身份验证。 我已经编写了插件,它应该可以工作,但我只是不知道如何加载插件...我已经读过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 个答案:

答案 0 :(得分:3)

假设您的appnamespaceApplication_,那么您的插件类应为:

  1. 名为Application_Plugin_AuthenticationPlugin

  2. 存储在文件application/plugins/AuthenticationPlugin.php

  3. 使用类似(application/configs/application.ini)中的内容注册到前控制器:

    resources.frontController.plugins.auth = "Application_Plugin_AuthenticationPlugin"

答案 1 :(得分:2)

您可以使用与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

答案 2 :(得分:0)

在例如您的Bootstrap文件中添加以下行:

Zend_Controller_Front::getInstance()->registerPlugin(new AuthenticationPlugin());