【问题标题】:Namespace autoloading with composer and PSR-0 not working as expected使用 composer 和 PSR-0 的命名空间自动加载未按预期工作
【发布时间】:2018-10-05 12:41:45
【问题描述】:

我创建了一个test 项目来了解composer 和packagist 的工作原理。该项目也在packagist

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

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

这是我的目录结构和作曲家文件。

这是 GoWin.php 文件:

  <?php

  namespace GoWin;

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

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

  <?php

  require_once './vendor/autoload.php';

  // use GoWin;

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

但它无法执行serve 方法并出现此错误:

致命错误:未捕获的错误:在中找不到类“GoWin\GoWin”

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

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

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

【问题讨论】:

标签: php namespaces composer-php


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 2013-11-30
    • 2014-10-25
    • 2013-08-03
    • 2013-08-11
    • 2014-07-25
    • 2014-09-24
    • 2015-04-09
    • 2013-06-29
    相关资源
    最近更新 更多