在Zendframework-1中,我们通常将自定义代码保存在库文件夹下(与应用程序文件夹并行),几乎使用与zend框架(供应商)库相同的文件夹结构来创建插件或扩展核心库。
在zend框架2中,文件夹结构已更改。 zend供应商核心库在Vendor文件夹下移动,应用程序文件夹移动到Module(root)文件夹中。
我的问题是,哪个是在ZF2中保存自定义插件/代码库文件夹的最佳位置?
其他人都经历过这个阶段吗?
答案 0 :(得分:5)
取决于库
的目的案例1,被许多模块使用:
将它放在您的供应商文件夹中,确保符合PSR-0,这使自动加载变得容易。
案例2,仅由一个模块使用:
将其放在modules/your_module/src
下并编辑Module.php
s getAutoloaderConfig()
方法以使其自动加载。
....
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,您的图书馆是第三方模块:
将其放在供应商文件夹中,以便参考ZfcUser
我认为您的用例最像是案例1,您的库会修改例如Zend\Mvc\Controller\AbstractActionController
或其他插件。
但如果插件仅由一个模块使用,则最好将其与模块代码并行,如案例2中所述。
答案 1 :(得分:4)
./vendor
如果您的代码具有通用目的(即:StdClass,ArrayAccess,Iterator等类)。简而言之,如果模块需要使用这些类,它们应该在供应商内部。
./module
如果您的插件/代码是用于特定目的(和独立),您可以评估它是否是模块(即:ZF-Commons第三方模块/插件,如ZfcUser)