首页 文章

PHP composer autoload没有加载类

提问于
浏览
2

我刚刚开始使用composer进行依赖管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我在这里寻求建议 . 我有一个类可以生成已经在包装上的随机值 . 项目结构如下(我标记了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',所以's not autoloading correctly. Am I not complying to psr-4, or is there something else I'我做错了吗?我也尝试使用像 "classmap" : ["RandomValue.php"] 这样的作曲家类图进行自动加载,但没有成功 . 谢谢您的帮助

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

2 回答

  • 1

    代码如何产生你提到的错误?在我看来,你很可能错过了在那里使用正确的命名空间,其他一切看起来都不错 .

  • 5

    我在电话上,所以它可能不漂亮 . 将作曲家的位更改为 "Namespace\\" 并执行composer dump-autoload -o

相关问题