函数的定义
我们有一个很简单的函数echoName
function echoName(){ echo "metaPHP"; }
他的结构如下
array( 'type'=>'function', 'name'=>'echoName', 'property'=>array(), 'child'=>array( array( 'type'=>'echo', 'value'=>array('type'=>'string','data'=>'metaPHP') ) ), )
type=function表示,这个结构是一个函数定义
函数定义结构包含以下几个属性,
name表示函数名称
property数组表示函数的参数
child数组表示函数体内部的表达式
大部分函数都有返回值,处理有返回值的函数时候,需要用到return返回数据,meta中则是type=return的结构来定义,如下demo:
function getName(){ return "metaPHP"; }
对应如下
array( 'type'=>'function', 'name'=>'getName', 'property'=>array(), 'child'=>array( array( 'type'=>'return', 'value'=>array('type'=>'string','data'=>'metaPHP') ) ), )
参数的定义
function echoName($name){ echo $name; }
对应meta结构如下,关注property这个属性的值
array( 'type'=>'function' 'name'=>'echoName', 'property'=>array( array('type'=>'variable','name'=>'$name'), array('type'=>'variable','name'=>'$type'), ), 'child'=>array( array( 'type'=>'echo', 'value'=>array( 'type'=>'variable', 'name'=>'$name' ) ), ) )
如果遇到属性有默认值,例如
function echoName($name="meta"){ echo $name; }
则property属性则表示为对应的表达式,理解为=赋值操作
'property'=>array( array( 'type'=>'variable', 'name'=>'$name' ), array( 'type'=>'=', 'object1'=>array( 'type'=>'variable', 'name'=>'$name' ), 'object2'=>array( 'type'=>'string','data'=>'meta' ), ), )
如果遇到引用传递
function echoName($name,&$count){ echo $name; }
这时候需要用上type=function的另一个属性propertyType,如果是第二项参数是需要&,则propertyType数组第二项为&
array( 'type'=>'function', 'property'=>array( array( 'type'=>'variable', 'name'=>'$name' ), array( 'type'=>'variable', 'name'=>'$count' ), ), 'propertyType'=>array( '', '&', ), 'child'=>array( ) )
函数定义完成了,接下来就得需要调用函数
比如我们调用刚才定义的函数echoName
echoName("Hello");
这个则会解析为functionCall的表达式
array( 'type'=>'functionCall', 'name'=>'echoName', 'property'=>array( array( 'type'=>'string', 'data'=>'Hello' ), ), )
name是调用的函数名,property数组,则是调用时传递的参数
目录
也欢迎进行QQ联系本人 ,交流我在开发metaPHP过程中的经验
QQ:309568486