【问题标题】:Composer Autoload not working after deployment部署后作曲家自动加载不起作用
【发布时间】:2017-12-28 21:03:08
【问题描述】:

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

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

我会稍微解释一下:项目 A 的 composer.json 文件有一个自动加载行,用于将命名空间映射到“src”目录的“psr-4”——运行后一切正常且工作正常:

composer install

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

当我尝试将项目 A 作为依赖项包含在项目 B 中时出现问题 - 运行 composer install 后一切看起来都正常 - 创建了供应商目录并将文件复制到那里 - 但是当我查看生成的“ 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"
}

谢谢!

【问题讨论】:

    标签: php github composer-php autoload


    【解决方案1】:

    问题是我将项目 A 作为“包”包含到项目 B 中。我相信不会扫描“包”以查找其包含的 composer.json 文件。 (如果我错了,请纠正我) - 通过更改项目 B 的 composer.json 文件以将项目 A 引用为“vcs”,然后自动加载再次工作。 - 这是项目 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"
    }
    

    我真的很难找到工作示例,因为我才刚刚开始使用 composer 并且在此之前只包含了来自 packagist 的专业包。我有很多东西要学(即使是在术语方面) - 所以如果有人可以添加额外的相关信息以正确地将 1 个开发项目包含在另一个项目中,我会接受你的回答。

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 2016-10-20
      • 2016-08-01
      • 2015-12-24
      • 2017-12-28
      • 2013-03-05
      • 2016-05-26
      • 1970-01-01
      • 2013-12-09
      相关资源
      最近更新 更多