我的项目中有以下目录结构:
Test
--Cats
----Fatty.php // namespace: Test\Cats
--index.php
的index.php:
spl_autoload_extensions(".php");
spl_autoload_register();
Test\Cats\Fatty::fattyMeow();
我得到的错误:
致命错误:Class' Test \ Cats \ Fatty'找不到 第9行/var/www/public/Test/index.php
根据php.net上的this评论,如果名称空间与项目的目录结构匹配,spl_autoload_register()
应该可以正常工作而不提供任何autoload
函数。那么,为什么上面的代码不起作用?或者我误解了什么?
答案 0 :(得分:1)
这不适合您的原因是您在命名空间中包含主目录Test
的名称。执行此操作并运行spl_autoload
时,它会认为该目录作为index.php
的兄弟存在。
要解决此问题,请调整命名空间并删除Test
:
:
Cats\Fatty::fattyMeow();
在Fatty.php中:
namespace Cats;