【问题标题】:Class not found in psr-4 composer autoloading在 psr-4 作曲家自动加载中找不到类
【发布时间】:2019-01-31 21:40:55
【问题描述】:

我有一个带有供应商文件夹的基本文件夹,其中包括作曲家文件夹和我创建的文件夹 src。 src 文件夹包含工作所需的所有类。

在 src 文件夹中,我有下面的类示例

<?php

    namespace Test;

    class Example{
        public function display(){
            echo "This is Example Class";
        }
    }

 ?>

我的 composer.json 有以下内容:

{
    "autoload":{
        "psr-4":{
            "Test\\":"src"
        }
    }   
}

最后我在基础文件夹的测试文件中创建示例类的实例:

<?php

    require 'vendor/autoload.php';

    $a=new Test\Example();
    $a->display();


?>

问题是当我尝试运行测试文件时出现以下错误:[致命错误:未捕获的错误:找不到类'Test\Example'。]

请帮助我做错了什么,Here 是目录结构的屏幕截图。 提前致谢。

【问题讨论】:

  • 您在vendor 目录中有src
  • 是内部供应商目录
  • vendor 目录仅用于依赖项,应由 Composer 完全管理 - 在任何时候您都应该能够通过调用 composer install 将其删除并恢复它。不要将自己的文件放入其中。
  • 是的,谢谢,我将 src 文件夹放在基本目录中,它对我有用。

标签: php composer-php autoload psr-4


【解决方案1】:

老实说,我不确定您的 srctesting.phpcomposer.json 位于何处,但它们应该位于主目录中(在您的情况下为 2-Basic-example 而不是 vendor目录)。然后运行:

composer dump-autoload

假设您的Example 类在src 目录中保存为Example.php,它应该可以工作

【讨论】:

  • 感谢 marcin,将 src 文件夹移到基目录中对我有用。
猜你喜欢
  • 2017-01-02
  • 2018-09-03
  • 1970-01-01
  • 2016-10-24
  • 2016-03-31
  • 2017-05-16
  • 2017-01-27
  • 1970-01-01
  • 2015-07-31
相关资源
最近更新 更多