本文最初由托馬斯·普特(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中文網其他相關文章!