PHP命名空间错误。在作曲家项目中找不到的类

时间:2016-09-20 15:12:37

标签: php namespaces

有人可以指出我正确的方向。我已经下载了一个GIT项目Namshi / JOSE,它是一个JWT签名和验证库。我有一个目录结构如下所示。

directory structure

我的所有单元测试(在 tests 文件夹内都能正常工作,所以 composer.json bootstrap.php 文件都可以。但是当我尝试添加自己的测试时,在 myTests-> simpleTest.php 文件夹中,如下所示,我无法获取命名空间来解析类 SimpleJWS 。库的名称空间是 Namshi / JOSE 。我的简单测试调用代码是:

    <?php

      use Namshi\JOSE\SimpleJWS;
      //require_once ("../src/Namshi/JOSE/SimpleJWS.php");

      $jws  = new SimpleJWS(array(
       'alg' => 'RS256'
       ));

错误文字为:Fatal error: Class 'Namshi\JOSE\SimpleJWS' not found。 psr-4语句如下:

    "autoload": {
    "psr-4": {
    "Namshi\\JOSE\\":  "src/Namshi/JOSE/"

    }
    },
    "autoload-dev": {
    "psr-4": {
        "Namshi\\JOSE\\Test\\":  "tests/Namshi/JOSE/Test/"

    }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您对自动加载的想法是正确的,但正如您所说,您的测试文件位于“myTests”下;你的autoload-dev只是指向错误的目录“tests / Namshi / JOSE / Test /”,而你的文件位于“myTests”中。

"autoload-dev": {
    "psr-4": {
         "Namshi\\JOSE\\Test\\": "myTests"
    }
}

另请确保您的考试类的FQCN(完全合格的班级名称)为Namshi\JOSE\Test\simpleTest

<?php

namespace Namshi\JOSE\Test;

class simpleTest {}

根据以下评论,您错过了测试套件中自动加载的内容。