【发布时间】:2019-10-11 03:37:17
【问题描述】:
我正在学习 Composer 的工作原理(开发人员的新手^^)但我正在努力修复我的自动加载...
这是我的 composer.json :
"autoload": {
"psr-4": {
"OCFram\\": "/../lib/",
"App\\": "/../",
"Model\\": "/../lib/vendors/",
"Entity\\": "/../lib/vendors/",
"FormBuilder\\": "/../lib/vendors/",
"Slug\\": "/../lib/vendors/"
}
},
例如:
致命错误:未捕获的错误:类 'App\Frontend\FrontendApplication' 没找到
嗯,FrontendApplication 路径(来自 composer.json):**
../App/Frontend/FrontendApplication.php
这是带有命名空间的 FrontendApplication.php:
<?php
namespace App\Frontend;
use \OCFram\Application;
class FrontendApplication extends Application
{
public function __construct()
{
parent::__construct();
$this->name = 'Frontend';
}
public function run()
{
$controller = $this->getController();
$controller->execute();
$this->httpResponse->setPage($controller->page());
$this->httpResponse->send();
}
}
另外,我注意到供应商/作曲家上的这个文件(autoload_psr4.php):
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Slug\\' => array('/lib/vendors'),
'OCFram\\' => array('/lib'),
'Model\\' => array('/lib/vendors'),
'FormBuilder\\' => array('/lib/vendors'),
'Entity\\' => array('/lib/vendors'),
'App\\' => array('/'),
);
希望能得到一些帮助:)
[编辑]
所以我改变了路径 "App\": "/../" (这是没有意义的) 到 : "应用\": "../",
现在在另一个作曲家转储自动加载之后我得到了这个:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Slug\\' => array($baseDir . '/../lib/vendors'),
'OCFram\\' => array($baseDir . '/../lib'),
'Model\\' => array($baseDir . '/../lib/vendors'),
'FormBuilder\\' => array($baseDir . '/../lib/vendors'),
'Entity\\' => array($baseDir . '/../lib/vendors'),
'App\\' => array($baseDir . '/..'),
);
但是当我尝试使用 php index.php 时仍然存在同样的问题: 致命错误:未捕获错误:类 'App\Frontend\FrontendApplication' 未找到
【问题讨论】:
-
更新:删除 / .. 不知道为什么我把它,但仍然是一个问题:“App\\”:“../”所以 autoload_psr4 现在显示:'App\\' =>数组($baseDir .'/..')
-
你试过在
composer.json更改后运行composer dump-autoload吗? -
是的,刚刚编辑了我的帖子,谢谢^^ 我遇到了同样的问题
标签: php composer-php