php - 使用 Composer 自动加载找不到类

标签 php composer-php slim

我的文件结构为

/
/app/
/app/logs/
/app/templates/
/app/index.php
/public_html/
/public_html/.htaccess
/public_html/index.php
/vendor
/vendor/(all vendor here)

我的虚拟主机指向/public_html

在应用程序/Index.php

namespace App;

class Index {}

Composer.json

"autoload":
{
    "psr-0":
    {
        "App\\":  "app/"
    }
}

但它仍然显示为(!) fatal error :在第 34 行的 C:\wamp\www\project\public_html\index.php 中找不到类“App\Index”

第 34 行:

new \App\Index();

如果重要的话也使用 Slimframework,想不出哪里出了问题

最佳答案

由于您使用的是 PSR-0 标准,PHP 一直在查找文件 app/App/Index.php,但该文件不存在。请注意,在 PSR-0 中,您定义了一个基目录(在您的情况下为 app),可以在其中找到映射的命名空间(App)。但是,该基目录中的文件结构应该与完全限定的类名完全匹配。因此类 App\FooBar 应该位于文件 app/App/FooBar.php 中。请注意,app 是基目录,App 是包含该命名空间的所有子目录和 PHP 文件的目录。

由于您的应用程序中并非如此(并且还因为 PSR-0 已被弃用),因此您应该(正如您已经所做的那样)使用新的自动加载标准 PSR-4。在PSR-4中,您可以直接将某个命名空间映射到某个目录。在您的例子中,您已将 App 命名空间映射到 app 目录,以便 PHP 将打开 app/Index.php 文件(如果您这样做)需要使用App\Index类。

关于php - 使用 Composer 自动加载找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480745/

相关文章:

php - 重复内容 - PHP 包括? [搜索引擎优化]

docker - Composer 无法加载包无效的版本字符串

testing - PHPUnit:本地 VS 全局安装

git - Composer + 本地 git 存储库 : "could not be found in any version"

php - 在 .htaccess 中启用 cors

php - Angularjs 和 slim 框架 JWT 身份验证和 token 刷新流程

PHP 允许的 zip mimetypes

php - 解析错误 : syntax error, 意外的 T_FUNCTION 第 10 行?

javascript - AngularJS SlimPHP CRUD - $http.delete 不起作用 - XMLHttpRequest 无法加载

php - Yii、yiic 和控制台