查看了许多资料
1 如果100个文件 都要用 都要一个一个include进来
所以有了这种autoload加载
但是看到网上说 这种autoload 有缺点就是只能加载一次 这加载一次怎么理解呢?
如果我在autoload对文件名字作判断 然后include不同目录的php文件不也可以吗?
我主要想知道 这个autoload 如何 过渡到spl_autoload 还有 只能加载一次这个怎么说?
查看了许多资料
1 如果100个文件 都要用 都要一个一个include进来
所以有了这种autoload加载
但是看到网上说 这种autoload 有缺点就是只能加载一次 这加载一次怎么理解呢?
如果我在autoload对文件名字作判断 然后include不同目录的php文件不也可以吗?
我主要想知道 这个autoload 如何 过渡到spl_autoload 还有 只能加载一次这个怎么说?
spl_autoload_register内部维护了一个队列,后注册的在队首,加载类的时候依次调用队列中的加载函数,直至类加载成功
详解请参考PHP autoload 机制详解
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
2 回答909 阅读
spl_autoload_register和__autoload都是PHP自动加载的两种方式。自从spl_autoload_register出现后,已经逐渐替代了__autoload.虽然二者实现的最终功能一样,但是不同的是spl_autoload_register可以注册多种加载机制。而__autoload只可以定义一次。
比如,现在需要加载目录A和目录B内的类,A目录中定义所有文件名和类名一致,B目录下的文件名和类名也一样,但是会多一个和类名一样的目录,比如类MapA,存放在目录b/MapA/MapA.php,那么A和B注册加载机制不一样,如果用__autoload就需要多从判断,而spl_autoload_register分开写两种注册机制,都进行注册就好了。其实只是spl_autoload_register比__autoload更灵活而已。