函数

魔方加密支持函数定义和调用。

函数定义

函数定义的语法如下:

  1. function name(parameter_list) {
  2. statement_list
  3. }

参数列表可为空。

参数可以设置默认值,默认值必须是字面常量。第一个设置了默认值的形参后所有形参都必须设置默认值,如下列的代码是不合法的:

  1. 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 内置函数,需要提供变量引用作为参数,例如:

  1. int preg_match ( $pattern , $subject [, array &$matches [, $flags = 0 [, $offset = 0 ]]] )

中的 &$matches,以及:

  1. bool sort ( array &$array [, $sort_flags = SORT_REGULAR ] )

中的 &$array 等。

魔方加密对作为参数的变量引用提供了有限支持。

如果使用变量引用,对应参数必须是一个变量,如:

  1. <?php
  2. 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) 不被支持

原文: http://mfenc-manual.mydoc.io/?t=41517