解释
PHP 在其语法中存在一些漏洞,在开发过程中,程序员偶尔会介入其中。这可能会导致很多挫败感,因为这些语法漏洞似乎无缘无故地存在。例如,不能轻易地创建一个数组并在同一行访问该数组的任意元素(func1()[100]
不是有效的 PHP 语法)。此问题的解决方法是使用临时变量并将语句分成两行,但有时这会导致非常冗长、笨拙的代码。
挑战
我知道其中一些漏洞(我相信还有更多)。甚至很难想出一个解决方案,更不用说代码高尔夫风格了。获胜者是所有四个语法孔中字符总数最少的人。
规则
- 语句必须是这种形式的一行:
$output = ...;
,其中...
不包含任何;
's。 - 只使用标准库函数(不允许自定义函数
eval
) - 语句的工作方式与假定的非工作语法的功能相同(即使在它失败的情况下)。
- 语句必须在没有任何类型的语法错误的情况下运行
E_STRICT | E_ALL
。
语法漏洞
$output = func_return_array()[$key];
- 访问函数返回数组的任意偏移量(string
或)integer
$output = new {$class_base.$class_suffix}();
- 用于创建新类的任意字符串连接$output = {$func_base.$func_suffix}();
- 任意字符串连接被称为函数$output = func_return_closure()();
- 调用从另一个函数返回的闭包