PHP是什麼-PHP的架構及原理概述
記得剛開始學習PHP的時候,許多面試官會經常問我PHP是什麼,那時的標準回答是PHP是一種弱型動態腳本程式語言,開源,
免費,是超文本預處理器的縮寫。
這只是很淺的解釋,PHP對我來說是一個工具,是我手上的一把錘子,雖然這把錘子時常被調侃為兩邊都是起釘器的錘子。
多進程模型
PHP是以多進程模型設計的,這樣的好處是請求之間互不干涉,一個請求失敗也不會對其他進程造成影響,作為最開始僅用於個人網站的一個工具集這樣的設計並沒有什麼不妥,隨著PHP的應用變大,訪問量增加這種方式顯然是不合適的,因為啟動一個進程的開銷對於海量請求是不划算的,所以現在PHP基本上都是運行在PHP-FPM的管理下的,這是一個PHP進程管理器,它常駐內存啟動一些PHP進程待命,當請求進入時分配一個進程進行處理,PHP進程處理完畢後回收進程,但不會銷毀進程,這讓PHP也能應付高流量的存取要求。
當然現在也有PHP多執行緒的解決方案和基於協程的解決方案讓PHP更有效率的處理WEB請求。
弱型別
與JAVA、C/C 不同,PHP是若型別的語言,變數在宣告的那一刻是不需要確定它的型別的,而在運行時類型也會發生顯式或隱式的類型改變,這也是PHP開發應用迅速、方便的原因之一。
其他
Zend 引擎 Ext 擴充 的模式降低了內部耦合,可以方便的為PHP本身增加功能和移除功能。
語法簡單,沒有太多強制規範,程式風格上既可以用過程式、也可以用物件導向的方式來開發,當然函數式也可以。
以目前的 PHP 主流版本 PHP7 和 PHP5 來說架構是如上圖所示,主要有四層體系構成,從下到上依序是 Zend 引擎、Extensions 擴充、SAPI 介面、上層應用。
Zend 引擎
Zend 引擎是PHP4 以後加入PHP 的,是對原有PHP解釋器的重寫,整體使用C 語言進行開發,也就是說可以把PHP理解成用C寫的一個程式語言軟體,引擎的作用是將PHP程式碼翻譯成一種叫opcode的中間語言,它類似JAVA的ByteCode(字節碼)。
引擎對PHP程式碼會執行四個步驟:
詞法分析 Scanning(Lexing),將 PHP 程式碼轉換為語言片段(Tokens)。解析 Parsing, 將 Tokens 轉換成簡單而有意義的表達式。編譯 Compilation,將表達式編譯成Opcode。執行 Execution,順序執行Opcode,每次一條,以實現PHP程式碼所表達的功能。
APC、Opchche 這些擴充功能可以將Opcode快取以加速PHP應用的運行速度,使用它們就可以在請求再次來暫時省略前三步驟。
引擎也實現了基本的資料結構、記憶體分配與管理,提供了對應的API方法供外部呼叫。
Extensions 擴展
常見的內建函數、標準庫都是透過extension來實現的,這些叫做PHP的核心擴展,用戶也可以根據自己的要求安裝PHP的擴充。
SAPI
SAPI 是Server Application Programming Interface 的縮寫,中文為服務端應用程式接口,它透過一系列鉤子函數使得PHP可以和外圍交換數據, SAPI 就是PHP 和外部環境的代理器,它把外部環境抽象後,為內部的PHP提供一套固定的,統一的接口,使得PHP 自身實現能夠不受錯綜複雜的外部環境影響,保持一定的獨立性。
透過 SAPI 的解耦,PHP 可以不再考慮如何針對不同應用進行相容,而應用程式本身也可以針對自己的特點實現不同的處理方式。
上層應用程式
程式設計師編寫的PHP程序,無論是Web 應用還是Cli 方式運行的應用都是上層應用,PHP 程式設計師主要工作就是編寫它們。
總結
這些東西如果你學習過 android 開發理解起來顯然更容易,因為android的架構和PHP的這種架構看起來很相似。當你理解這些後你就會理解為什麼PHP的創辦人會說PHP開發其實是不需要框架的,因為PHP的設計本身就是一個類似框架的東西,如果用汽車比喻的話PHP本身就是車的骨架, Zend的是引擎,Ext是輪子,方向盤等車的組件,SAPI 就是路。
對於這些內容,可能有的人覺得有點無用,因為很多人偏執的認為自己只是個開車的,為什麼開車的要了解車子是怎麼跑起來的,對於了解如何製造一輛車更是嗤之以鼻。我曾經也這麼認為,直到翻譯Laravel文件時,Laravel 的作者給了我一些啟發,也把這些話送給看到這篇文章的你們:
使用「現實世界」中的任何工具時,如果理解這個工具的運作原理,那麼你會更加得心應手的使用這個工具。應用開發也是這樣。當你明白你的開發工具如何運作的,你就會對它們的使用游刃有餘。
這篇文件的目的是讓你更好的理解 Laravel 框架如何進行工作及它的工作原理。透過對框架進行全面的了解,一切都不會那麼「神奇」,也將讓你更有自信的建構你的應用。
以上是PHP是什麼-PHP的架構及原理概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元
