基础知识
函数是可供重复调用的代码块,是编程语言可复用性的重要组成。当函数被调用时,调用者根据函数名找到函数定义的指令集合、执行指令并返回结果给调用者。
PHP 7 的函数可以分为 3 大类:用户定义函数、内置函数和匿名函数。
-
用户定义函数:以关键字 function 定义的函数,在我们的代码中广泛使用。用户函数需要经过引擎的词法和语法解析才能最终生成可供调用的指令。
-
内置函数:包含默认编译进 PHP 的函数,如 string 系列;还包括其他选择编译的扩展函数,如常用的 mysql_connect 函数。内置函数无须经过 Zend 引擎的词法、语法解析即可直接调用。其速度优于用户定义函数。
-
匿名函数:以没有函数名的定义形式出现,实现了闭包的性质。以下为 PHP 官方手册匿名函数示例:
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
?>
下面我们开始介绍 PHP 7 中函数从 PHP 代码到 AST 再到 opcode 最后被执行的实现机制。