PHP composer autoload not loading class

cgvd09ve  于 2023-04-10  发布在  PHP
关注(0)|答案(2)|浏览(195)

我刚刚开始使用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
}

当我运行应用程序时,我得到一个错误'class RandomValue not found',所以它不能正确地自动加载。我没有遵守psr-4,或者我做错了什么?我也尝试过自动加载,只是使用像"classmap" : ["RandomValue.php"]这样的 composer classmap没有成功。感谢您的帮助
更新:我已经在composer.json B文件上运行了'composer validate',它肯定是有效的

8i9zcol2

8i9zcol21#

将您的composer更改为"Namespace\\"并执行composer dump-autoload -o

67up9zun

67up9zun2#

我最近遇到了类似的问题,在挣扎了一个小时后,我发现我没有在项目初始文件中使用require_once 'vendor/autoload.php;
我只是把这个答案发给那些和我一样忘记这部分的人。

相关问题