本文最初由托马斯·普特(Thomas Punt)撰写,并在许可下重印,详细介绍了PHP中的自定义范围操作员(|>)的创建。 假设熟悉来自来源的建筑PHP(请参阅PHP内部书籍以获取指导)。
该过程涉及修改四个关键领域:Lexer,解析器,编译阶段和Zend VM。
令牌。 然后,RE2C用于再生Lexer。在zend/zend_language_parser.y中也声明了令牌。 最后,>文件需要使用T_RANGE
>再生来确保令牌扩展名识别新的令牌。
T_RANGE
ext/tokenizer/tokenizer_data.c
tokenizer_data_gen.sh
>
)。
T_RANGE
ZEND_AST_RANGE
汇编阶段更新:Zend/zend_ast.h
函数,它发出了A
> Zend VM Update:ZEND_AST_RANGE
再生。 最后,已更新zend_compile_range
中的AST漂亮打印机以正确显示新操作员。
ZEND_RANGE
ZEND_RANGE
运算符基于两个操作数(min and max)创建一个数组:Zend/zend_vm_gen.php
Zend/zend_ast.c
> 如果>,返回单元素数组。
> 如果操作数无效,|>
min == max
>示例:1 |> 3; // [1, 2, 3] 2.5 |> 5; // [2.5, 3.5, 4.5] $a = $b = 1; $a |> $b; // [1] 2 |> 1; // Error exception 1 |> '1'; // Error exception new StdClass |> 1; // Error exception
>此详细说明提供了该过程的全面概述。 本文总结说,这是一个实现,将来将在未来的文章中探讨一个更有效的版本。 还包括一个常见问题解答部分,涵盖了有关范围操作员用法和行为的常见问题。
以上是在PHP中实施范围运算符的详细内容。更多信息请关注PHP中文网其他相关文章!