如何将Zend Framework 2中的模块目录从/ vendor更改为/ module?

时间:2014-02-27 20:01:18

标签: php zend-framework2

我想自定义我使用composer安装的模块,它现在位于/vendor。当我在/module目录中复制它时,它将不再被识别。这是文件/vendor/composer/autoload_classmap.php,我将其添加到其中:

return array(
    'myModule\\Module' => $vendorDir . '/../module/myModule/Module.php',
);

之后就开始工作了。但问题是每当我运行php comnposer.phar install时,该文件被覆盖,我必须再次更新该文件。

似乎我做错了。那么,在不丢失功能的情况下,将模块从供应商目录复制到模块目录的正确方法是什么?

此致

编辑:我想分叉包并编辑该分支。

2 个答案:

答案 0 :(得分:2)

从技术上讲,您可以通过在应用的vendor-dir中指定composer.json来更改作曲家安装内容的位置,请参阅:https://getcomposer.org/doc/04-schema.md#config但这会影响所有作曲家安装的内容,包括(大概)你的Zend Framework本身的安装。

我建议您按原样保留供应商文件夹,让Composer完成它的工作。

修改:好的,如果您想分叉项目,最好在应用之外进行更改。签出fork的副本,进行所需的任何更改并提交它们。然后在您的应用中运行composer update以引入更新版本。

如果您需要在提交之前在应用中测试您的更改,那可能会有点繁琐。就个人而言,我要在文件系统的其他地方进行符号链接(暂时,只是为了让它正常工作)。或者编辑供应商中的文件只是为了确定需要进行哪些更改,然后将这些更改再次应用到单独的分叉项目中。可能有更好的方法。

答案 1 :(得分:0)

我认为在尝试解决这个问题之前你必须先问这个问题:

  

为什么我需要将此目录移动到其他位置?

编辑/修改/移动位于vendor文件夹下的任何文件或目录,或者将它们合并到您真棒应用程序的模块/库/任何文件夹中。粘贴不是一个好习惯。作曲家不会喜欢这样。

要自定义库代码,请创建自己的模块(或库)文件夹,并正确扩展作曲家安装的第三方库类,这些类需要提供更多或不同的功能。