【问题标题】:How to configure the Zend autoloader to load a custom path for resources before the default path如何配置 Zend 自动加载器以在默认路径之前加载资源的自定义路径
【发布时间】:2010-07-30 17:21:41
【问题描述】:

独立但与How to dynamically override forms and/or views using Zend?相关。

我希望 Zend 在为 Web 应用程序加载一组默认表单之前尝试加载自定义表单/视图,以让客户为其应用程序创建自定义表单。

如何配置自动加载器以在默认 zend 类之前加载不同的路径?

【问题讨论】:

  • 虽然它不能解决这个问题,但我的解决方案是创建第二组视图和表单来扩展我们的默认视图和表单,然后一直加载它们。没有我想要的那么好,但它有它的优势。

标签: php zend-framework zend-autoloader


【解决方案1】:

与其他问题一样,您需要使用工厂类。此类将在预定义的目录中检查新表单或默认表单是否存在。

您需要做的就是:

// $formname is the parameter passed to the factory class
$defaultclassname = "Default_Form_{$formname}";
$classname = "New_Form_{$formname}";
if(file_exists("/path/to/directory/of/new/{$formname}.php"))
    return new $classname();
else
    return new $defaultclassname();

这将在您的工厂类中完成,例如 /MyLib/Form/Form_Factory.php

然后,在您的控制器中:

$form = MyLib_Form_Factory::createForm('user');

【讨论】:

  • 我仍然不相信工厂类是必要的。 Zend_Loader::loadClass 为要搜索的目录提供第二个参数,按照给定的顺序,但我找不到任何方法将该信息传递给自动加载器。
猜你喜欢
  • 2015-09-26
  • 2012-09-19
  • 2012-02-21
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 2021-08-25
  • 2014-06-25
  • 1970-01-01
相关资源
最近更新 更多