PHP自动加载子文件夹

时间:2013-12-23 22:56:03

标签: php namespaces autoload spl

我这样做

spl_autoload_register();

我有一个名为libs的文件夹,我的所有文件都是这样的:user.php / orm.php等,每个类里面都有我这样的文件

namespace libs;
class User { }

像这样调用类

$app = new libs\User;

这似乎有用,但是如果我想要自动加载一个不仅仅在libs文件夹里面的类,我会怎么做,例如里面的内容:

libs / example / example.php

我该如何自动加载该课程?

2 个答案:

答案 0 :(得分:1)

如果类定义和命名空间看起来像这样......

namespace libs\example;

class Example { ... }

自动加载器应该能够找到它。

请注意,默认的spl_autoload会降低命名空间和类名称的大小,因此您的文件名和路径都应该是小写的(您似乎已经开始这样做了,但我只是想提到它)。

另请注意,为保持一致性,您还应设置相应的自动加载扩展名,例如

spl_autoload_extensions('.php');
spl_autoload_register();

答案 1 :(得分:0)

只要命名空间一致,默认的SPL自动加载器就会找到它。使用您的示例,类的名称应为example,它应位于libs\example命名空间中,包含它的文件应为libs/example/example.php