前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ThinkPHP自动加载思路

ThinkPHP自动加载思路

作者头像
lukachen
发布2023-10-22 15:27:06
1170
发布2023-10-22 15:27:06
举报
文章被收录于专栏:LukaChen BlogLukaChen Blog

涉及到的两个函数

  • __autoload — 尝试加载未定义的类
  • spl_autoload_register — 注册给定的函数作为 __autoload 的实现

注: 如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。

如何显示注册__autoload

spl_autoload_register('__autoload');

为什么用 spl_autoload_register

  1. 你的项目里引用了别人的一个项目,你的项目中有一个__autoload,别人的项目也有一个__autoload,这样两个__autoload就冲突了。解决的办法就是修改__autoload成为一个,这无疑是非常繁琐的。
  2. 如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。

ThinkPHP autoload

  1. 在TP入口文件,启动引导类,引导类中使用 spl_autoload_functions 注册了一个自动加载的静态方法。
Image
Image
Image
Image
  1. 例在D方法调用 class_exists('xxxxx') 或直接 new xxxxx 若不存在相应的类(xxxxx),可触发 spl_autoload_functions 中注册的方法,即触发[类库自动加载]方法并传入类名('xxxxx')。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 涉及到的两个函数
  • 如何显示注册__autoload
  • 为什么用 spl_autoload_register
  • ThinkPHP autoload
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档