部署后,Composer Autoload无法正常工作

时间:2017-07-23 02:01:32

标签: php github composer-php autoload

我正在学习如何更好地维护我编写的代码。我目前正在处理两个项目 - 两个都在开发中,都被推送到GitHub。

我试图将一个项目包含在另一个项目中(通过在一个项目的composer.json文件中声明它是一个依赖项) - 但是在它包含之后,它缺少正确的自动加载配置。

我会更好地解释一下:Project A的composer.json文件有一个自动加载行,用于" psr-4"将命名空间映射到" src"目录 - 运行后一切都很好并且正常工作:

composer install

然后我可以包含/vendor/autoload.php文件并立即开始使用该项目。当我查看生成的" autoload_psr4.php"在该项目的供应商目录中的文件中,我可以看到该数组包含每个composer.json文件的映射名称空间/目录的引用。

当我尝试将项目A作为依赖项包含在项目B中时出现问题 - 在运行composer安装后一切看起来都有效 - 创建供应商目录并将文件复制到那里 - 但是当我查看生成的&时#34; autoload_psr4.php"项目B中的文件缺少每个项目A的composer.json文件的映射名称空间/目录。

有人能指出我可能缺少的方向让自动加载线继续进入项目B吗?

这是两个composer.json文件:

项目A:

{
    "name": "jfreynik/hydra-net",
    "description": "Network classes for the Hydra framework.",
    "type": "library",
    "keywords": [ "http", "net", "rest" ],
    "license": "MIT",

    "require": {
        "php": ">=5.3.0"
    },

    "autoload": {
        "psr-4": {
            "hydra\\net\\": "src/"
        }
    }
}

项目B:

{
    "name": "jfreynik/simple-mvc",
    "description": "A pretty simple MVC framework for building websites.",
    "type": "framework",
    "keywords": [ "MVC", "Website Framework" ],
    "license": "MIT",

    "repositories": [
        {
            "type":"package",
            "package": {
                "name": "jfreynik/hydra-net",
                "version":"*-dev",
                "source": {
                    "url": "https://github.com/jfreynik/hydra-net.git",
                    "type": "git",
                    "reference":"master"
                }
            }
        }
    ],
    "require": {
        "jfreynik/hydra-net": "*-dev"
    },
    "minumum-stability": "dev"
}

谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于我将项目A作为“包”包含在项目B中。我相信不会扫描“packages”中包含的composer.json文件。 (如果我错了,请纠正我) - 通过将Project B的composer.json文件更改为引用项目A为“vcs”,然后自动加载再次工作。 - 这是Project B的调整后的composer.json文件。

{
    "name": "jfreynik/simple-mvc",
    "description": "A pretty simple little MVC framework for building websites.",
    "type": "framework",
    "keywords": [ "MVC", "Website Framework" ],
    "license": "MIT",

    "repositories": [
        {
            "type":"vcs",
            "url": "https://github.com/jfreynik/hydra-net"
        }
    ],
    "require": {
        "jfreynik/hydra-net": "dev-master"
    },
    "minumum-stability": "dev"
}

我真的很难找到工作示例,因为我真的只是开始使用作曲家,而在此之前只包含了packagist的专业包。我有很多东西需要学习(甚至在术语方面) - 所以如果有人能够以正确的方式添加其他相关信息以便将1个开发项目包含在另一个开发项目中,我将接受您的回答。