函数
魔方加密支持函数定义和调用。
函数定义
函数定义的语法如下:
function name(parameter_list) {
statement_list
}
参数列表可为空。
参数可以设置默认值,默认值必须是字面常量。第一个设置了默认值的形参后所有形参都必须设置默认值,如下列的代码是不合法的:
function name($v1, $v2 = 1, $v3) { }
函数定义顺序不限,不需要先定义后使用。
函数调用
函数调用支持以下几种形式:
- 直接调用,如 func()
- 间接调用,如 $a = 'func'; $a();
- 将数组值作为函数名调用,如 $a = array ('func'); $a0;
- 动态类实例方法调用,如 $a->func();
- 静态类方法调用,如 $a = 'class_name'; $a::func();
- 组合调用,如 $a[0]->func();
- 链式调用,如 $a->func1()->func2();
作为参数的变量引用
有部分 PHP 内置函数,需要提供变量引用作为参数,例如:
int preg_match ( $pattern , $subject [, array &$matches [, $flags = 0 [, $offset = 0 ]]] )
中的 &$matches
,以及:
bool sort ( array &$array [, $sort_flags = SORT_REGULAR ] )
中的 &$array
等。
魔方加密对作为参数的变量引用提供了有限支持。
如果使用变量引用,对应参数必须是一个变量,如:
<?php
preg_match_all ('/(\d+)/', '1,2,3', $matches); print_r($matches);
注意,使用变量引用作为参数有以下限制:
- 不支持类方法
- 仅支持变量引用,不支持数组、类属性引用,如 func(&$a[0]) 不被支持
- 实参数量不能超过 9 个,如 func(&$a, 2, 3, 4, 5, 6, 7, 8, 9, 10) 不被支持