如何使用没有参数的spl_autoload_register?

时间:2016-02-19 14:49:46

标签: php

我的项目中有以下目录结构:

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函数。那么,为什么上面的代码不起作用?或者我误解了什么?

1 个答案:

答案 0 :(得分:1)

这不适合您的原因是您在命名空间中包含主目录Test的名称。执行此操作并运行spl_autoload时,它会认为该目录作为index.php的兄弟存在。

要解决此问题,请调整命名空间并删除Test

index.php中的

Cats\Fatty::fattyMeow();

在Fatty.php中:

namespace Cats;