在 Zendframework-1 中,我们通常将自定义代码保存在 library 文件夹下(与 application 文件夹平行)几乎使用与 zend 框架(供应商)库相同的文件夹结构来创建插件或扩展核心库。
在 zend 框架 2 中,更改了文件夹结构。zend 供应商核心库移动到供应商文件夹下,应用程序文件夹移动到模块(根)文件夹。
我的问题是,在 ZF2 中保存自定义插件/基于代码的库文件夹的最佳位置是哪个?
其他人经历过这个阶段吗?
在 Zendframework-1 中,我们通常将自定义代码保存在 library 文件夹下(与 application 文件夹平行)几乎使用与 zend 框架(供应商)库相同的文件夹结构来创建插件或扩展核心库。
在 zend 框架 2 中,更改了文件夹结构。zend 供应商核心库移动到供应商文件夹下,应用程序文件夹移动到模块(根)文件夹。
我的问题是,在 ZF2 中保存自定义插件/基于代码的库文件夹的最佳位置是哪个?
其他人经历过这个阶段吗?
取决于你的图书馆的目的
案例 1,被许多模块使用:
将它放在您的供应商文件夹中,确保符合 PSR-0,这使得自动加载变得容易。
情况 2,仅由一个模块使用:
将其放在下面modules/your_module/src
并编辑Module.php
sgetAutoloaderConfig()
方法以使其自动加载。
....
class Module {
....
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php', // classmap for production usage
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, // your module's files autoloading (development usage and fallback)
'library_namespace' => __DIR__ . '/src/librarys_namespace/potential_subfolder', // your library files autoloading (development usage and fallback). eg: 'acme' => '/src/acme/library' for acme namespace
),
),
);
}
....
案例 3,您的库是第 3 方模块:
将其放在供应商文件夹中,参考ZfcUser
我认为您的用例最喜欢案例 1,您的库修改了例如Zend\Mvc\Controller\AbstractActionController
插件或附加插件的行为。
但是如果一个插件只被一个模块使用,你最好将它与你的模块代码并行放置,如案例 2 中所述。
./vendor
如果您的代码具有通用目的(即:StdClass、ArrayAccess、Iterator 等类...)。简而言之,如果模块需要这些类才能工作,它们应该在供应商内部。
./module
如果您的插件/代码用于特定目的(和独立),您可以评估它是否是模块(即:ZF-Commons 3rd Party Modules/Plugins like ZfcUser)