【发布时间】:2019-09-22 01:06:31
【问题描述】:
我正在使用 Slim 和 Twig 创建一个网络应用程序。我使用的库完美运行,我可以轻松调用它们而没有问题。但是 composer.json 自动加载 psr-4 找不到我自己的类(psr-0 也找不到它们)
这是我的文件系统:
project
|composer.json
|src
|public
| |index.php
|classes
| |Application.php
| |middlewares
| |SecurityMiddleware.php
|templates
|TemplateController.php
|main
|MainController.php
这是我的composer.json:
{
"authors": [
{
"name": "Jean-Marc ZIMMER",
"email": "################@gmail.com",
"role": "Developer"
}
],
"require": {
"slim/slim": "^3.11",
"slim/extras": "*",
"twig/twig": "^2.5",
"slim/twig-view": "^2.4",
"slim/views": "^0.1.3"
},
"autoload": {
"psr-4": {
"src\\": "src",
"middlewares\\": "src/classes/middlewares",
"classes\\": "src/classes",
"templates\\": "src/templates"
}
}
}
然后src/classes/Application.php:
<?php
namespace classes;
class Application extends \Slim\App {
public function __construct($container = array()) {
parent::__construct($container);
}
}
最后是我的index.php 文件:
<?php
require '../../vendor/autoload.php';
$app = new \classes\Application([
"settings" => [
"displayErrorDetails" => true
]
]);
$app->run();
当我运行composer dump-autoload 时,命令输出:
生成的包含 0 个类的自动加载文件
然后以状态码 0 退出。它应该找到 4 个类,对吧?
运行应用程序显示错误:
致命错误:未捕获的错误:在 /opt/lampp/htdocs/project/src/public/index.php:5 中找不到类“classes\Application”
我确定我遗漏了一些东西,表示命名空间或其他东西。谁能帮帮我?
编辑:
我尝试使用 --optimize 或 --classmap-authoritative 选项进行转储自动加载。什么都没改变。
向 composer.json 中的文件夹名称添加“/”不会改变任何内容。
【问题讨论】:
-
您是否尝试使用
/完成所有文件夹名称?这是我看到自己的代码的唯一区别 -
NicoHaase 没有改变任何东西。
-
src/classes/Application.php长什么样子? -
你能运行
composer dump-autoload --classmap-authoritative吗?这应该会给您预期的结果。现在它不会单独读取文件,只会注册目录映射。 -
我用空的类骨架创建了相同的文件夹结构,它对我有用。请参阅:imgur.com/a/xM0X5r9 您能否展示完整的 composer.json?也许这可以帮助确定问题