php - 使用 composer 和 PSR-0 自动加载命名空间未按预期工作

标签 php namespaces composer-php

我做了一个 test项目以了解 composer 和 packagist 的工作原理。项目也在packagist .

一个简单的composer require rakibtg/gowin将从 packagist 安装包。

但由于某种原因,命名空间没有按预期工作。

这是我的目录结构和 composer 文件。
enter image description here

这是 GoWin.php 文件:

  <?php

  namespace GoWin;

  class GoWin {
    public function serve() {
      echo 'Lets Win Everybody!';
    }
  }

这是我尝试使用的 test.php 文件 serve()方法来自 GoWin类(class)。
  <?php

  require_once './vendor/autoload.php';

  // use GoWin;

  ( new GoWin\GoWin() )->serve();

但它无法执行serve有这个错误的方法:

Fatal error: Uncaught Error: Class 'GoWin\GoWin' not found in

/Users/usr/Desktop/t estGoWin/index.php:7 Stack trace:

0 {main} thrown in /Users/usr/Desktop/testGoWin/index.php on line 7



此刻我无法理解我错过了什么!我还应该使用 psr-0 还是 psr-4?

最佳答案

我通过切换到 PSR-4 解决了这个问题,只需更新 composer.json autolaod属性如下:

"autoload": {
    "psr-4": {
        "GoWin\\": "src/"
    }
},

关于php - 使用 composer 和 PSR-0 自动加载命名空间未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50015470/

相关文章:

php - 如何从 2 列中减去值

ruby-on-rails - 如何检查类或模块是否已命名空间?

php - 如何告诉 Composer 使用我的 fork 的一个分支?

php - 在<embed>标记内调用PHP函数

php - Magento 在家里显示的产品超过限制

c++ - 声明是否可以转义其封闭的 namespace ?

php - 无法从 PHP 中的命名空间类调用全局类。使用 Composer 自动加载

php - 无法运行composer self 更新: "The phar signature did not match the file you downloaded"

php - 检查字符串以查看特定分组是否存在(PHP)?

php - 命名空间自动加载在 Windows 下有效,但在 Linux 上无效