欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php自定义函数的工作原理和结构化编程介绍

程序员文章站 2022-05-13 14:02:44
...
当且仅当函数被调用以后,函数中的代码语句才会被执行,其目的是为了完成一些特定的任务。而函数被执行完成以后,控制权将返回到调用函数的地方,函数就能够以返回值的方式将信息返回给程序。通过在程序中使用函数,可以进行结构化编程。在结构化编程中,各个任务使用独立的程序代码一段一段完成的。而函数正式实现这种 “ 独立的程勋代码段 ” 最理想的方式,所以函数和结构化编程的关系非常之密切。结构化编程之所以很优秀,是有其自己独特的理由的,主要还是如下的两个重要的原因:

1. 结构化程序更容易被编写,因为复杂的编程问题被划分为多个更小的、更简单的任务。每个任务由一个函数来完成,而函数中的代码和变量独立于程序的其他部分。通过每次处理一个简单的任务,编程的速度将会更加快捷。

2. 结构化程序更容易调试。如果程序中有一些无法正确运行的代码,结构化设计则使得将问题缩小到特定的单码段,比如一个特定的函数。这样调试错误修改就比较方便,自上到下,从左到右,一步一步按照顺序来进行即可。

结构化编程的一个显著的优点是可以节省时间。如果在一个程序中编写一个执行特定任务的函数,则可以在另一个需要执行相同任务的程序中使用它。即使心程序需要王城的任务稍微不同,但修改一个已有的函数比重新编写一个函数更容易。想想看,你经常使用使用 echo() 和 var_dump() , 虽然首先应该确认程序的功能,必须做一些规划,在规划中必须列出程序要执行的所有具体任务。然后使用函数编写每个具体的任务,在主程序中按执行顺序调用每个任务函数,就组成了一个完整的结构化程序。下面图中所示是一个包含三个函数的程序,其中每个函数都执行特定的任务,可以再主程序中调用一次或者多次。每当函数被调用时,控制权便被传递给函数。函数执行完毕后,控制权返回到调用该函数的位置

如下图所示:

php自定义函数的工作原理和结构化编程介绍

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表。函数调用的时候会首先根据函数名从表中找到对应的zend_function。当进行函数调用时候,虚拟机会根据type的不同决定调用方法, 不同类型的函数,其执行原理是不相同的 。

【相关教程推荐】

1. 《php.cn独孤九贱(4)-php视频教程

2. php编程从入门到精通全套视频教程

3. php实战视频教程

以上就是php自定义函数的工作原理和结构化编程介绍的详细内容,更多请关注其它相关文章!