【问题标题】:Loading custom classes from the library directory in Zend从 Zend 中的库目录加载自定义类
【发布时间】:2011-04-04 23:57:12
【问题描述】:

我正在尝试从命名空间加载一整套类。这些只是实用程序类,我不想将它们视为操作帮助器、视图帮助器或任何类型的插件(感谢文档,我让它们工作得很好)。

我有一个类似于 Zend 的目录结构,例如,一个名为 Resources_Employee_Salary 的类存储在 library/Resources/Employee/Salary.php 下。

现在,当我在我的动作控制器中时,我想创建一个 Resources_Employee_Salary 的实例,但我不能,因为它找不到类。

我必须做些什么才能让 Zend 一次性加载 Resources/* 下的类?我查看了 Zend_Loader,但它具有要求特定文件或类的方法,我想加载整个目录。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

    标签: php zend-framework classloader zend-loader


    【解决方案1】:

    您需要适当地命名您的类...

    Path: library/Resources/Employee/Salary.php
    Class: Resources_Employee_Salary
    

    然后你需要用自动加载器注册你的命名空间...

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

    当然你也可以在你的项目配置文件中指定这个,这样你就不必手动做......在XML格式中,这看起来像(如果你喜欢的话,不确定ini格式......):

    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns:zf="http://framework.zend.com/xml/zend-config-xml/1.0/">
      <production>
        <autoloaderNamespaces>
          <resources value="Resources_" />
        </autoloaderNamespaces>
      </production>
    </application>
    

    【讨论】:

    • 感谢您的回复,正如我在问题中所说,我已经正确命名了我的课程(大约有 20 个)。我想知道如何使用自动加载器注册该命名空间?我知道如何注册插件和助手,而不是“常规”类。
    • 谢谢你,成功了。我通过单击绿色箭头将其选为答案。再次感谢。
    • 为了完整起见,在ini文件中:autoloadernamespaces[] = "Resources_"
    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2012-03-11
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多