我的文件结构为
/
/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/