- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP函数的实现原理及性能分析
目录
TOC \o 1-5 \h \z ntrW 1
HYPERLINK \l bookmark2 \o Current Document \h Php函数的分类 1
HYPERLINK \l bookmark3 \o Current Document \h Php函数的实现 1
3.1内置函数 3
HYPERLINK \l bookmark4 \o Current Document \h 3.2用户函数 4
HYPERLINK \l bookmark5 \o Current Document \h 3.3勧法 4
t娜批 5
HYPERLINK \l bookmark17 \o Current Document \h 伪函数及其性能 8
HYPERLINK \l bookmark19 \o Current Document \h 常用的php函数实现介绍 9
HYPERLINK \l bookmark20 \o Current Document \h 总结及建议 11
1.前言
在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函 数调用是怎么实现的? php函数的性能如何,有什么使用建议?本文将从原理出发进行分析 结合实际的性能测试尝试对这些问题进行冋答,在了解实现的同时更好的编写php程序。 同吋也会对一些常见的php函数进行介绍。
2. Php函数的分类
在php中,横向划分的话,函数分为两大类:user function(内置函数)和internal function
(内置函数)。前者就是用户在程序巾自定义的一些函数和方法,后者则是php本身提供的 各类库函数(比如sprintf、array_push等)。用户也可以通过扩展的方法来编写库函数,这 个将在后而介绍。对于user function,又可以细分为function (函数)和method (类方法), 本文中将就这三种函数分别进行分析和测试。
3. Php函数的实现
一个php函数最终是如何执行,这个流程是怎么样的呢?
要冋答这个问题,我们先来看看php代码的执行所经过的流程。
JF始
图孓1 php代码的执行过程
从阁1可以看到,php实现了一个典型的动态语言执行过程:拿到一段代码后,经过词法解 析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执 行这些指令完成操作。Php本身是用c实现的,因此最终调用的也都是c的函数,实际上, 我们可以把php看做是一个c开发的软件。
通过上面描述不难看出,php中阑数的执行也是被翻译成了 opcodes来调用,每次闲数 调用实际上是执行了一条或多条指令。
对于每一个函数,zend都通过以下的数据结构来描述
typedef union _zend_function {
zend_uchar type; /* MUST be the first element of this struct!
struct {
zend_uchar type; /* never used */ char *function_name; zend_class_entry *scope; zend_uint fn_flags; union _zend_function *prototype; zend_uint num_args; zend_uint required_num_args; zend_arg_info *arg_info; zend_bool pass_rest_by_reference; unsigned char return_reference;
} common;
zend_op_array op_array;
zend internal function internal function;
} zend_function;
typedef struct _zend_function_state {
HashTable *function_symbol_table; zend_function *function;
void *reserved[ZEND_MAX_RESERVED_RESOURCES];
} zend_function_state;
其中type标明了函数的类型:用户函数、内置函数、重载函数。Common中包含函数 的基本信息,包括函数名,参数信息,函数标志(普通函数、静态方法、抽象方法)等内容。 另外,对于用户函数,还有一个函数符号表,记录了内部变量等,这个将在后面详述。
Zend维护了一个企局function_table,这是一个大的hahs表。阑数调用的时候会首先根 据函数名从表屮
您可能关注的文档
最近下载
- DF11机车常见电器故障处理动车论坛.doc VIP
- 精选7篇带头严守政治纪律和政治规矩,维护党的团结统一“四个带头”发言提纲.docx VIP
- 骨质疏松治疗仪联合地舒单抗治疗骨质疏松性压缩骨折的疗效及其对骨密度.pptx
- 学校风雨体育场(风雨操场)项目可行性研究报告.docx VIP
- 云南省茶叶出口影响因素的实证研究.docx VIP
- 格林童话-走进天堂的裁缝.docx VIP
- 2022版诊所备案信息表.doc
- 实腹式钢吊车梁(中轻级工作制_A1-A5_Q235钢_跨度6.0m、7.5m、9.0m).pdf VIP
- 一带一路背景下云南茶叶出口现状问题及对策.docx VIP
- 蒸汽发生器课程设计.docx VIP
原创力文档


文档评论(0)