我正在尝试将php命名空间加载到我的symfony项目中,但在运行时不断收到以下错误。
Attempted to load class "FM" from namespace "VehicleTracking\Src\Vendors\FM".
Did you forget a "use" statement for another namespace?
从
调用它的控制器namespace BWT\FMBundle\Controller;
use VehicleTracking\Src\Vendors\FM\FM;
class FMController extends Controller
{
/**
* @Route("/fuel_data", name="fuelData")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function fuelDataAction(Request $request)
{
//...
$tripProcesses = new FM(); //<-this is the line where I get the error
$_results = $tripProcesses->getTripWithTotals($form->get('fleetNo')->getData(), $form->get('startDate')->getData(), $form->get('endDate')->getData());
}
}
FM.php文件。它位于vendor / bwt / vehicle_tracking / src / vendors目录中 tracking.interface和tracking.class位于同一目录
<?php
namespace VehicleTracking\Src\Vendors\FM;
// : Includes
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR . 'tracking.interface');
include_once (dirname(realpath(__FILE__)) . DIRECTORY_SEPARATOR . 'tracking.class');
// : End
use VehicleTracking\Src\Vendors\Vendors as Vendors;
use VehicleTracking\Src\Vendors\TrackingInterface as TrackingInterface;
class FM extends Vendors\Vendors implements TrackingInterface\TrackingInterface
{
public function getTrackingData()
{...}
}
autoload_namespace.php
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
//...
'' => array($vendorDir . '/bwt/vehicle_tracking/src/vendors'),
);
答案 0 :(得分:0)
通常,您应该避免在供应商下编辑任何内容。您的更改将会丢失。在这种情况下,您可以编辑项目composer.json文件
"autoload": {
"psr-4": {
"": "src/",
"VehicleTracking\\Src\\Vendors\\FM\\": "vendor/bwt/vehicle_tracking/src/vendors"
},
进行更改后,运行composer dump-autoload更新自动加载内容。
我给出的路径是基于你的问题,至少那是意图。它假设FM.php直接位于vendor / bwt / vehicle_tracking / src / vendors
下我只测试了一个假的FM.php类。那里有包含语句和其他一些奇怪代码的事实可能会产生额外的错误。
答案 1 :(得分:0)
我们最终通过添加
解决了这个问题"autoload" : {
"psr-4" : {
"Vendors\\" : "src/"
}
},
到外部包的composer.json,并将类的名称空间更改为namespace Vendors;
,以便它与目录相同。
我必须运行composer update -o
来优化自动加载器,否则我会不断收到这些错误。