Bài viết này đã được bình duyệt bởi Younes Rafie. Cảm ơn tất cả những người đánh giá ngang hàng của SitePoint đã làm cho nội dung SitePoint trở nên tốt nhất có thể
Lấy cảm hứng từ một bài viết gần đây về cách mã Ruby thực thi, bài viết này đề cập đến quy trình thực thi mã PHP
Giới thiệu
Có rất nhiều thứ đang diễn ra khi chúng ta thực thi một đoạn mã PHP. Nói chung, trình thông dịch PHP trải qua bốn giai đoạn khi thực thi mã
- lexing
- phân tích cú pháp
- biên soạn
- Diễn dịch
Bài viết này sẽ lướt qua các giai đoạn này và chỉ ra cách chúng ta có thể xem đầu ra từ mỗi giai đoạn để thực sự biết điều gì đang diễn ra. Lưu ý rằng mặc dù một số tiện ích mở rộng được sử dụng phải là một phần trong quá trình cài đặt PHP của bạn [chẳng hạn như mã thông báo và OPcache], những tiện ích mở rộng khác sẽ cần được cài đặt và kích hoạt thủ công [chẳng hạn như php-ast và VLD]
Giai đoạn 1 – Lexing
Lexing [hoặc tokenizing] là quá trình biến một chuỗi [trong trường hợp này là mã nguồn PHP] thành một chuỗi các token. Mã thông báo chỉ đơn giản là một mã định danh được đặt tên cho giá trị mà nó đã khớp. PHP sử dụng re2c để tạo từ vựng của nó từ zend_language_scanner. tôi tập tin định nghĩa
Chúng ta có thể thấy đầu ra của giai đoạn lexing thông qua tiện ích mở rộng mã thông báo
$code =