微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-Composer require-dev从软件包的自动加载未添加到项目的自动加载中

我在composer.json文件中制作了具有以下设置的composer软件包:

"autoload": {
    "psr-4": {
        "Myvendor\\MyPackage\\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Test\\Unit\\MyProject\\MyPackage\\": "test/unit"
    }
},

如果我运行composer install并强制执行dev参数,则会得到以下“ autoload_psr4.PHP文件

<?PHP

// autoload_psr4.PHP @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Test\\Unit\\Myvendor\\MyPackage\\' => array($baseDir . '/test/unit'),
    'Myvendor\\MyPackage\\' => array($baseDir . '/src'),
);

所以基本上,这里一切都很好.然后,将包添加到Satis服务器.

在项目的composer.json文件中,添加以下行:

"require": {
    "myvendor/mypackage": "1.0.*@dev",
    "symfony/http-foundation": "2.5.*",
    "symfony/http-kernel": "2.5.*"
}

我再次在项目中运行composer install,以强制执行dev参数.该软件包安装在“ vendor / myvendor / mypackage文件夹”中,并且我知道已安装DEV版本,因为其中存在“ test”文件夹(在稳定发行版中,排除了测试文件夹(存档排除)).

但是,“ autoload_psr4.PHP文件中缺少以下行

'Test\\Unit\\Myvendor\\MyPackage\\' => array($baseDir . '/test/unit'),

这是我使用的composer安装命令:

composer install --dev -d /var/www/myproject

基本上,我想知道为什么我的软件包的dev名称空间没有添加自动加载器中.有人可以解释吗?

解决方法:

autoload-dev和require-dev都仅适用于根目录(顺便说一句,dev是认设置).开发版本仅在您要开发软件包时有用.一旦您在另一个项目中需要该软件包,就不再想要开发该软件包,而是在另一个项目中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐