我有用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
正确自动加载类。
答案 0 :(得分:1)
我们最终通过添加
解决了这个问题"autoload" : {
"psr-4" : {
"Vendors\\" : "src/"
}
},
到composer.json并将类的名称空间更改为namespace Vendors;
,以便它与目录相同。
答案 1 :(得分:0)
根据您的命名空间的编写方式,您的文件应位于
中MyRepo1\Src\Vendors\FM\FM.php;