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

时间:2018-04-25 06:33:13

标签: php namespaces composer-php

我制作了一个test项目来了解作曲家和包装工作者是如何运作的。该项目也在packagist

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

但由于某种原因,命名空间无法正常工作。

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

这是GoWin.php文件:

  <?php

  namespace GoWin;

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

这是test.php文件,我尝试使用serve()类中的GoWin方法。

  <?php

  require_once './vendor/autoload.php';

  // use GoWin;

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

但它无法使用此错误执行serve方法:

  

致命错误:未捕获错误:

中找不到类'GoWin \ GoWin'      

/ Users / usr / Desktop / t estGoWin / index.php:7堆栈跟踪:

     在第7行的/Users/usr/Desktop/testGoWin/index.php中抛出

0 {main}

此刻我无法理解我所缺少的东西!我应该使用psr-0还是psr-4?

1 个答案:

答案 0 :(得分:0)

我通过切换到PSR-4解决了它,只需更新composer.json autolaod属性:

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