让PHP5.3支持短数组语法(short array syntax)
短数组语法(short array syntax)是PHP5.4新增的语法特性,定义数组时使用[1, 2 , 3]代替array(1, 2, 3),代码简洁了不少,许多同学在项目中都用到了这个特性。然而很多老旧的项目依然是在PHP5.3环境下运行的,使用短数组语法就会造成语法错误,如何解决这个问题呢?
其实,短数组语法并没有提供新的功能,仅仅是对现有语法做了一个简化,可以认为是一种语法糖(Syntactic sugar)。在Zend引擎的语法分析阶段,让[ ]产生与array( )一样的语法分析结果,就可以解决这个问题。PHP的语法规则文件是zend_language_parser.y,在里面找到数组的定义规则
| T_ARRAY '(' array_pair_list ')' { $$ = $3; }
将其复制到下一行,并修改为
| '[' array_pair_list ']' { $$ = $2; }
然后重新编译PHP,搞定!测试结果如下

附Windows下PHP源码编译官方教程:

浙公网安备 33010602011771号