Php 找不到使用composer自动加载的类
我的文件结构如下所示Php 找不到使用composer自动加载的类,php,composer-php,slim,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) 我的vhost指向/public\u html 在app/Index.php中 namespace App; class Index {} Composer.json "autoloa
/
/app/
/app/logs/
/app/templates/
/app/index.php
/public_html/
/public_html/.htaccess
/public_html/index.php
/vendor
/vendor/(all vendor here)
我的vhost指向/public\u html
在app/Index.php中
namespace App;
class Index {}
Composer.json
"autoload":
{
"psr-0":
{
"App\\": "app/"
}
}
但它仍然显示为(!)致命错误:在第34行的C:\wamp\www\project\public\u 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
目录,这样,如果需要使用App\Index
类,PHP将打开App/Index.PHP
文件。psr-0似乎失败,将其更改为psr-4可以:)