我加入这个回应既希望回答原来的问题,并对此处提交的一些项目提供一些说明。我是ZF 1.11中一个活跃的模块开发人员,并且使用我将要在我们维护的几个模块之一中每天解释的内容。
对于此回复的长度,我很抱歉。有几个项目需要考虑和考虑。
一,实施。
以下提供的片段据我所知提供〜1.8,并不会是你想要的1.11。
<?php
class Notifications_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initLibraryAutoloader() {
return $this->getResourceLoader()->addResourceType('library', 'library', 'library');
}
}
下,虽然将工作提供优良下面我会介绍几个关键要素。
protected function _initLibraryAutoloader() {
return $this->getResourceLoader()->addResourceType('library', 'library', 'Library_');
}
您会注意到第三个参数(名称空间)略有差异。这样做的最好的解释将是可能更新的功能如下:
Array
(
[dbtable] => Array
(
[namespace] => Admin_Model_DbTable
[path] => /path/to/trunk/application/modules/admin/models/DbTable
)
[mappers] => Array
(
[namespace] => Admin_Model_Mapper
[path] => /path/to/trunk/application/modules/admin/models/mappers
)
[form] => Array
(
[namespace] => Admin_Form
[path] => /path/to/trunk/application/modules/admin/forms
)
[model] => Array
(
[namespace] => Admin_Model
[path] => /path/to/trunk/application/modules/admin/models
)
[plugin] => Array
(
[namespace] => Admin_Plugin
[path] => /path/to/trunk/application/modules/admin/plugins
)
[service] => Array
(
[namespace] => Admin_Service
[path] => /path/to/trunk/application/modules/admin/services
)
[viewhelper] => Array
(
[namespace] => Admin_View_Helper
[path] => /path/to/trunk/application/modules/admin/views/helpers
)
[viewfilter] => Array
(
[namespace] => Admin_View_Filter
[path] => /path/to/trunk/application/modules/admin/views/filters
)
[library] => Array
(
[namespace] => Admin_Library
[path] => /path/to/trunk/application/modules/admin/library
)
)
如果你比较这对以前的“库”为:
protected function _initLibraryAutoloader() {
$this->getResourceLoader()->addResourceType('library', 'library', 'Library_');
var_dump($this->getResourceLoader()->getResourceTypes());die;
}
输出应该是类似的东西第三个参数,你会在第二个参数中看到它为什么会产生如此重要的差异。
重申,在这一点上,您已经声明了一个库类型,其前缀为“Library_”,即翻译为“Admin_Library”。现在,为了实现这一点,您可以像在主应用程序模块中一样在模块中创建库文件夹,只需稍作调整即可。要拥有管理员模块特定的控制器操作(Admin_Library_Controller_Action),您将拥有库/ Controller/Action.php,并且类名称为Admin_Library_Controller_Action。这是大多数人开始感到困惑的地方,但它与您应该在模块中使用的其他资源命名空间非常相似。
总结技术说明。如果您没有进一步阅读,您将能够拥有一个特定于您的模块的库,并且完全独立,可以轻松复制/粘贴可重复使用模块。
现在对于我在这里看到的其他一些回复的一些评论。
无穷指出
“如果你按照你的结构,你可能最终与 - 单词数(LIB1,LIB3),所以你会开始复制需要的库 - 模块1(LIB1,LIB2)。”
这在技术上是正确的,但如果您发现自己经常使用同一个库,那么在您的实际开发风格中会带来更多问题。我们通常将这些常用项存储在另一个库中,我们将它们用作外部的,与Zend相同,并放在Zend的一侧放在主应用程序库文件夹中。
假如你已经这样做了,我相信可能需要一些额外的说明,如果你正确地使用了命名空间,你绝对不必担心库类名的冲突。你可能会在很短的时间内发现你需要在多个模块中拥有相同代码的类,但是一旦发生这种情况,除了上面提到的Zend之外,还应该考虑一下通用库。
我对此回复的长度再次表示歉意。我希望它能帮助任何可能遇到这篇文章的人需要模块中的库实现。
有点难说,因为ZF1没有模块的想法。我在使用的testModule中看到的Bootstrap.php如何? – Jojo
目前它并没有做任何事情,因为所有Zend想要知道它在那里,但如果我可以让Zend知道我的模块中有另一个库,那将是一个非常理想的情况。 –