命名空间未被作曲家更新自动加载

时间:2017-02-02 06:14:19

标签: php json symfony

我有用vanilla PHP编写的外部存储库,我想在我的Symfony项目中使用' composer require'调用工作正常,所有文件都加载到供应商目录中。在运行时,我不断收到以下错误。

Attempted to load class "FM" from namespace "MyRepo1\Src\Vendors\FM".
Did you forget a "use" statement for another namespace?

我认为它可能是PHP存储库的composer.json,包含在下面。

{
    "name" : "myUserName/MyRepo1",
    "minimum-stability" : "dev",
    "repositories" : [{
            "type" : "git",
            "url" : "https://github.com/myUserName/MyRepo2"
        }
    ],
    "require" : {
        "myUserName/MyRepo2" : "*",
        "php" : "^7.0"
    },
    "version" : "1.0.2",
    "require-dev" : {
        "phpunit/phpunit" : "5.5.*",
        "squizlabs/php_codesniffer" : "2.*",
        "mayflower/php-codebrowser" : "~1.1"
    }
}

下面是FM类,它位于vendor / myUserName / MyRepo1 / src / vendors目录中,tracking.interface和tracking.class位于同一目录中

<?php
namespace MyRepo1\Src\Vendors\FM;
// : Includes
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR .    'tracking.interface');
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR . 'tracking.class');
// : End
use MyRepo1\Src\Vendors\Vendors as Vendors;
use MyRepo1\Src\Vendors\TrackingInterface as TrackingInterface;

class FM extends Vendors\Vendors implements TrackingInterface\TrackingInterface
{

}

我是否需要对composer.json文件进行任何更改,以便使用composer update正确自动加载类。

2 个答案:

答案 0 :(得分:1)

我们最终通过添加

解决了这个问题
"autoload" : {
    "psr-4" : {
        "Vendors\\" : "src/"
    }
},

到composer.json并将类的名称空间更改为namespace Vendors;,以便它与目录相同。

答案 1 :(得分:0)

根据您的命名空间的编写方式,您的文件应位于

MyRepo1\Src\Vendors\FM\FM.php;