書名: PHP 7底層設計與源碼實現作者名: 陳雷等本章字數: 602字更新時間: 2019-01-04 16:53:43
2.2 PHP 7內核架構
經過上一節對PHP代碼執行原理的簡介,我們大概清楚了PHP 7執行脈絡的各個主要部分的基本工作是什么,但是各個部分的輸入/輸出是如何串聯的呢?
這就是接下來要介紹的重要角色——Zend引擎(Zend Engine),也就是前文提到的引擎。Zend引擎中包含了編譯器和解釋器,從PHP代碼到opcode的執行,均由Zend引擎完成。
Zend引擎除了實現了PHP的核心功能,還提供了一套接口,讓PHP可以在更多的場景中使用,如命令行環境、Web環境等。
我們通過圖2-4,試圖描述以Zend引擎為核心的組織架構。

圖2-4 PHP7源碼架構
該架構圖大致分為四大部分。
1)Zend引擎:前文介紹的詞法/語法分析、AST編譯和opcodes的執行均在Zend引擎中實現。此外,PHP的變量設計、內存管理、進程管理等也在引擎層實現。引擎為PHP提供了基礎服務,PHP的可靠性和高性能都依賴引擎的基礎支撐。同時,Zend引擎的可擴展性,還是PHP得以大規模應用的重要原因之一。
2)PHP層:Zend引擎為PHP提供基礎能力(如內存分配和回收),而來自外部的交互則需要通過PHP層來處理。
3)SAPI:SAPI是Server API的縮寫,其中包含了常見的cli SAPI和fpm SAPI。PHP定義好輸入/輸出規范,依據此規范與PHP交互的一方都可以稱為Server。這樣做的好處便是Server方可以忽略PHP的內部實現,只要遵守定義好的SAPI協議,便可完成交互,極大豐富了PHP可以支持的Server類型。
4)擴展部分:Zend引擎提供了核心能力和接口規范。在此基礎上開發的擴展,為PHP代碼的性能和功能的多樣性提供了更豐富的選項。
本書的后續章節基本上也是按照這里的組織結構,細分展開。
推薦閱讀
- 騰訊iOS測試實踐
- Dependency Injection in .NET Core 2.0
- 單片機應用與調試項目教程(C語言版)
- HTML5從入門到精通(第4版)
- Odoo 10 Implementation Cookbook
- 軟件項目管理實用教程
- PHP與MySQL權威指南
- Mastering Adobe Captivate 7
- INSTANT Premium Drupal Themes
- Scratch編程入門與算法進階(第2版)
- Mastering MeteorJS Application Development
- Visual C++ 2017網絡編程實戰
- 小學生C++編程課堂(新手篇)
- 破繭成蝶:用戶體驗設計師的成長之路
- 小學生Python創意編程(視頻教學版)