函数的使用

函数的定义

我们有一个很简单的函数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数组,则是调用时传递的参数

 

目录

引擎介绍

元代码结构

metaPHP数组的使用

函数的使用

类的定义和使用

杂七杂八的

修改已有代码

也欢迎进行QQ联系本人 ,交流我在开发metaPHP过程中的经验

QQ:309568486

posted @ 2017-09-22 10:50  浩然哥哥v5  阅读(187)  评论(0编辑  收藏  举报