zendframework 2 - 保存自定义库文件夹的位置

Dev*_*per 11 zend-framework zend-framework2

在Zendframework-1中,我们通常将自定义代码保存在库文件夹(与应用程序文件夹并行)下,几乎使用与zend框架(供应商)库相同的文件夹结构来创建插件或扩展核心库.

在zend框架2中,文件夹结构被更改.zend供应商核心库在Vendor文件夹下移动,应用程序文件夹移动到Module(root)文件夹中.

我的问题是,哪个是在ZF2中保存自定义插件/代码库文件夹的最佳位置?

还有其他人经历过这个阶段吗?

Sam*_*Sam 5

./vendor如果您的代码具有通用目的(即:StdClass、ArrayAccess、Iterator 等类)。简而言之,如果模块需要这些类才能工作,那么它们应该位于供应商内部。

./module如果您的插件/代码用于特定目的(和独立),您可以评估它是否是一个模块(即:ZF-Commons 3rd 方模块/插件,如 ZfcUser)


Sam*_*zog 5

取决于您的图书馆的目的

案例1,由许多模块使用:
将它放在您的供应商文件夹中,确保符合PSR-0,这使自动加载变得容易.

案例2,仅由一个模块使用:
将其放在下面modules/your_module/src并编辑Module.phps 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
            ),
        ),
    );
}

....
Run Code Online (Sandbox Code Playgroud)

案例3,您的库是第三方模块:
将其放在供应商文件夹中,以便查看ZfcUser的参考

我认为你的用例最像是案例1,你的库修改了例如Zend\Mvc\Controller\AbstractActionController或其他插件的行为. 但是如果插件仅由一个模块使用,则最好将其与模块代码并行,如案例2中所述.