2016-02-19 90 views
0

我在我的项目目录结构如下:如何在不带参数的情况下使用spl_autoload_register?

Test 
--Cats 
----Fatty.php // namespace: Test\Cats 
--index.php 

的index.php:

spl_autoload_extensions(".php"); 
spl_autoload_register(); 

Test\Cats\Fatty::fattyMeow(); 

我得到的错误:

Fatal error: Class 'Test\Cats\Fatty' not found in /var/www/public/Test/index.php on line 9

this在PHP评论.net,spl_autoload_register()应该工作得很好没有任何autoload功能提供如果名称空间匹配直接项目的结构。那么,为什么上面的代码不起作用?还是我误解了某些东西?

+0

什么是你所得到的错误? –

+1

我没有看到Techniques文件夹也没有看到Grumpy.php –

+0

对不起,为了简化结构,我修改了一下 –

回答

1

这不适合你的原因是因为你的名字空间中包含主目录Test的名字。当你这样做,你运行spl_autoload它会认为该目录作为兄弟index.php存在。

为了解决这个问题调整自己的命名空间,并删除Test

Cats\Fatty::fattyMeow(); 
在Fatty.php

的index.php中

namespace Cats; 
+0

感谢您的答案。不幸的是,错误仍然存​​在。 –

+0

您是否收到相同的错误或不同? – CodeGodie

+0

对不起,我拼错方法名称。你的解决方案就像一个魅力! –

相关问题