首页 > 作文

summary:PHP autoload机制分析

更新时间:2023-04-07 05:18:48 阅读: 评论:0

php实现autolo知道了的英文ad有两种方法:

1、拦截器__autoload()

2、设置全局变量函数指针autoload_func为指定函数。通常在c扩展中使用

本质上前者还是通过后者实现的。

分析过程,php5.3.6

=>zend/zen南阳教育网录取查询d自制保湿面膜_vm_def.h 1894行

zend_vm_handler(109,zend_fetch_class,…

=>zend_execute_api.c 1526行

zend_class_entry *zend_fetch_class(const char *class_name,…

=>zend_execute_api.c 1564行

if(zend_lookup_class_ex(class_name,class_name_len,…

=>zend_execute_api.c 1039行

zend_api int zend_lookup_class_ex(const char *na…

=>zend_execute_api.c 1121行

retval = zend_call_function(&fcall_info, &fcall_cache tsrmls_cc);

=>zend_execute_api.c 758行

zend_call_function

顾名思义,zend_call_function的主要功能是调用php函数。其参数fcall_in我的梦想是什么fo, fcall_cache,分别指向两个重要的结构,zend_fcall_info和zend_fcall_info_cache

zend_call_function主要工作流程如下:

如果fcall_cache.function_handler不为null,则直接执行 fcall_cache.function_handler指向的函数。

如果 fcall_cache.function_handler为null,则尝试查找函数名为fcall_info.function_name的函 数,如果存在的话,则执行之;

则总结为如下,

autoload机制的主要执行过程为:

(1) 检查执行器全局变量函数指针autoload_func是否为null。

(2) 如果autoload_func不为null,则直接执行autoloa动植物检疫专业d_func指针指向的函数用来加载类,并不检查__autoload()函数是否定义。

(3) 如果autoload_func为null,则查找中是否定义有__autoload()函数。如果没有定义,则报告错误并退出;如果定义了__autoload()函数,则执行__autoload()尝试加载类,并返回加载结果。

自动加载方便了面向对象和代码复用,但是多个类库不同的__autoload又会导致混乱。

可以用spl_autoload解决,将不同开发者的拦截器函数都注册到自动加载函数的hashtable中。

spl实现自动加载的机制是维护一个hashtable,里面存储有具有自动加载功能的各个函数。

当触发自动加载机制时,zend会在遍历执行这个hashtable里面的函数,直到成功加载类或加载失败后返回。

当需要使用自动加载功能时,使用函数spl_autoload_register()或spl_autoload_register(autoloadfuncitonname)

无参的spl_autoload_register()会默认加载spl_autoload()函数,该函数功能有限,只能在inlcude_path中搜索指定扩展名的类库。

有参的spl_autoload_register()默认不再加载spl_autoload()函数。

可以通过spl_autoload_functions()查看当前自动加载hashtable中的函数,该函数返回一个数组

注意:使用spl_autoload时,系统会忽略拦截器__autoload,除非显式地使用spl_autoload_register(__autoload)将其加入hashtable

codefor

本文发布于:2023-04-07 05:18:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/ddb33c7b8ed75f921606f4291fbb4162.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:summary:PHP autoload机制分析.doc

本文 PDF 下载地址:summary:PHP autoload机制分析.pdf

下一篇:返回列表
标签:函数   加载   自动加载   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图