php自动加载为什么autoload被抛弃了
查看了许多资料
1 如果100个文件 都要用 都要一个一个include进来
所以有了这种autoload加载
但是看到网上说 这种autoload 有缺点就是只能加载一次 这加载一次怎么理解呢?
如果我在autoload对文件名字作判断 然后include不同目录的php文件不也可以吗?
我主要想知道 这个autoload 如何 过渡到spl_autoload 还有 只能加载一次这个怎么说?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
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更灵活而已。
spl_autoload_register内部维护了一个队列,后注册的在队首,加载类的时候依次调用队列中的加载函数,直至类加载成功
详解请参考PHP autoload 机制详解