不支持的语法列表

Z5加密支持 PHP 7.2 支持的绝大多数语法,但不支持以下语法:

extract / compact

不支持extract函数与compact函数,将拒绝编译。

extract(['a' => 'b']);

静态成员变量

不支持对于静态成员变量设置引用:

class A { static $b = 0 }
echo A::$b; // 支持
$a::$b = 10; // 支持
$a::$b = &$a; // 不支持

FUNC_GET_ARG(s) / FUNC_NUM_ARG

和PHP 7.2相同,不支持动态调用func_get_args。将返回不正确结果。

func_get_args(); // 支持
$a = func_num_args(); // 支持
$b = func_get_arg($a); // 支持
$c = call_user_func_array('func_get_args', []); // 支持
$d = 'func_get_args'; $d(); // PHP 7.2和本加密都不支持
$d = 'func_get_args'; call_user_func_array($d, []); // PHP 7.2和本加密都不支持

Lambda / 函数内部定义其他结构

暂不支持以下类似代码,将在编译时提示编译失败:

function a () {
  function b () {}
  class A {}
  $a = function () use ($b) {}
  $b = function () {}
  $c = new class {}
}

Generator / Yield

暂不支持Generator / Yield,将在编译时提示编译失败:

function count_to_ten() {
    yield 1;
    yield 2;
    yield from [3, 4];
    yield from new ArrayIterator([5, 6]);
    yield from seven_eight();
    return yield from nine_ten();
}

其他

TICKS

暂不支持declare / ticks语法,将在编译时提示编译失败:

declare(ticks = 1) {
  // something
}

类型相关

已定义的函数返回类型将被忽略,不会再进行检查。

function a (): callable {
  return 'Hello';
}