PHP 作曲家自动加载不加载类

问题描述 投票:0回答:2

我刚刚开始使用 composer 进行依赖管理,我很难弄清楚我是如何不遵守 psr-4 进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,该类已经在 packagist 上了。项目结构如下(我将 composer.json 文件标记为 A 和 B):

项目目录

  |classfile.php 
A |composer.json
  |vendor
   |autoload.php
    |ejfrancis
      |php-random-value
B       |composer.json
        |RandomValue.php        <--the class I want autoloaded    

composer.json A

{
    "require": {
        "ejfrancis/php-random-value": "dev-master"
    }
}

composer.json B

{
    "name": "ejfrancis/php-random-value",
    "description": "Secure random value generator.",
    "require": {
        "php": ">=5.3.0"        
    },
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "ejfrancis\\" : ""
        }
    }
}

最后是 RandomValue.php 文件,它声明了 ejfrancis 命名空间

namespace ejfrancis;

class RandomValue{
  //foo
}

当我运行应用程序时,出现错误“未找到类 RandomValue”,因此无法正确自动加载。我是不是不遵守 psr-4,还是我做错了什么?我也尝试过使用像

"classmap" : ["RandomValue.php"]
这样的作曲家类图来自动加载,但没有成功。 谢谢帮助

更新:我在 composer.json B 文件上运行了'composer validate',它绝对是有效的

php composer-php autoload psr-4
2个回答
16
投票

将您的作曲家更改为

"Namespace\\"
并做作曲家
dump-autoload -o


0
投票

最近遇到了类似的问题,折腾了一个小时,才发现原来项目初始文件里的

require_once 'vendor/autoload.php;
没有用到

我刚刚发送了这个答案给像我一样忘记这部分的人。

© www.soinside.com 2019 - 2024. All rights reserved.