一般而言,您可以通过适当使用Zend_Loader_Autoloader
几乎完全避免拨打require_once
。当然,关键是“适当的”。
通常,您的public/index.php
将include_path
设置为library
文件夹。然后,如果您使用的是Zend_Application
,则Zend_Loader_Autoloader
已注册以查找其名称空间前缀已使用application/configs/application.ini
中的autoloadernamespaces
数组注册的任何PSR-0 compliant classes。
棘手的部分是在不“驻留在包含路径”文件中定义的类,就像出现在application/models
模型,驻留在application/services
服务等即使类中定义有倾向于遵循PSR- 0标准,PSR-0映射相对于基地off包含路径的事实意味着系统必须知道类名前缀与基本路径之间的映射。这是resource autoloaders进来的地方。这些资源自动加载器通常在应用程序Bootstrap中自动设置,扩展Zend_Application_Bootstrap_Bootstrap
和模块引导程序,扩展Zend_Application_Module_Bootstrap
。
视图助手是类“驻留在include_path”之外的另一个例子,可能类似于application/views/helpers
。由于通常使用简写形式$this->someHelper($someParam)
在视图脚本中调用这些脚本,因此必须告知系统如何从此简称生成完全限定的类名。这是通过使用将名称空间前缀映射到文件系统位置的$view->addPrefixPath()
完成的。同样,应用程序级别和模块级别的自举机制也为您设置了大部分。
对于不遵循PSR-0标准的库/类,您可以创建custom autoloaders并将它们(通常在Bootstrap处)附加到Zend_Loader_Autoloader
单例。这是你明确包含/需要的唯一地方。
tl; dr:通过正确使用现有的ZF自动加载机制,您几乎不需要在自己的应用程序代码中包含include/require
语句。
我的问题给你...是否有助于你真正需要的解决方案?也许一个插件会更合适? – RockyFord