Composer生成错误的大写命名空间

时间:2016-03-18 04:45:39

标签: php json namespaces composer-php psr-4

当引入一个自制的composer包时,所引入的文件的命名空间大小写与源代码不同。

<小时/> GitHub上的软件包源代码

来源composer.json代码:

"name": "bsapaka/metattribute",
"autoload": {
        "psr-4": {
            "Bsapaka\\Metattribute\\": "src/"
        }
    },

来源namespace

namespace Bsapaka\Metattribute;

<小时/> 拉入项目from Packagist

时显示的代码

作曲家在autoload_psr4.php中生成的行:

'bsapaka\\metattribute\\' => array($vendorDir . '/bsapaka/metattribute/src'),

供应商文件中出现的命名空间:

namespace bsapaka\Metattribute;

尝试使用它时的例外:

  

未找到类'bsapaka \ Metattribute \ AttributeList'

我尝试更改源代码大小写。全部为大写,全部为小写,一个为低一个,等等。每次,psr4路径和类名称空间永远不会相同,并且异常仍然存在。

1 个答案:

答案 0 :(得分:0)

我下了一个copy of your library并创建了一个PHPUnit测试。我无法重现你的问题。看起来你已经解决了?您现在正在使用namespace Bsapaka\Metattribute

Tests\AttributeTest.php

<?php

class AttributeTest extends PHPUnit_Framework_TestCase
{
    public function testName()
    {
        $attribute = new \Bsapaka\Metattribute\Attribute("Elvis");
        $this->assertEquals("Elvis", $attribute->getName());
    }
}

要使上述功能正常运行,composer.json现在包括:

"require-dev": {
    "phpunit/phpunit": "~4.0"
}

通过:vendor/bin/phpunit tests/AttributeTest.php

发布