亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP架構及原理知識點詳解

 更新時間:2019年12月22日 09:11:37   作者:silencement  
這篇文章主要介紹了PHP架構及原理知識點以及相關實例講解,需要的朋友們參考下。

記得我剛開始學習PHP的時候,許多面試官會經(jīng)常問我PHP是什么,那時的標準回答是PHP是一種弱類型動態(tài)腳本編程語言,開源,

免費,是超文本預處理器的縮寫。

這只是很淺的解釋,PHP對我來說是一個工具,是我手里的一把錘子,雖然這把錘子時常被調(diào)侃為兩邊都是起釘器的錘子。

多進程模型

PHP是以多進程模型設計的,這樣的好處是請求之間互不干涉,一個請求失敗也不會對其他進程造成影響,作為最開始僅僅用于個人網(wǎng)站的一個工具集這樣的設計并沒有什么不妥,隨著PHP的應用變大,訪問量增加這種方式顯然是不合適的,因為啟動一個進程的開銷對于海量請求是不劃算的,所以現(xiàn)在PHP基本都是運行在PHP-FPM的管理下的,這是一個PHP進程管理器,它常駐內(nèi)存啟動一些PHP進程待命,當請求進入時分配一個進程進行處理,PHP進程處理完畢后回收進程,但并不銷毀進程,這讓PHP也能應對高流量的訪問請求。

當然現(xiàn)在也有PHP多線程的解決方案和基于協(xié)程的解決方案讓PHP更高效的處理WEB請求。

弱類型

與 JAVA、C/C++ 不同,PHP是一門若類型的語言,變量在聲明的那一刻是不需要確定它的類型的,而在運行時類型也會發(fā)生顯式或隱式的類型改變,這也是PHP開發(fā)應用迅速、方便的原因之一。

其他

Zend 引擎 + Ext 擴展 的模式降低了內(nèi)部耦合,可以方便的為PHP本身增加功能和去除功能。

語法簡單,沒有太多強制規(guī)范,編程風格上既可以用過程式、也可以用面向?qū)ο蟮姆绞竭M行開發(fā),當然函數(shù)式也可以。

以目前的 PHP 主流版本 PHP7 和 PHP5 來說架構是如上圖所示,主要有四層體系構成,從下到上依次是 Zend 引擎、Extensions 擴展、SAPI 接口、上層應用。

Zend 引擎

Zend 引擎是 PHP4 以后加入 PHP 的,是對原有PHP解釋器的重寫,整體使用 C 語言進行開發(fā),也就是說可以把PHP理解成用C寫的一個編程語言軟件,引擎的作用是將PHP代碼翻譯為一種叫opcode的中間語言,它類似于JAVA的ByteCode(字節(jié)碼)。

引擎對PHP代碼會執(zhí)行四個步驟:

詞法分析 Scanning(Lexing),將 PHP 代碼轉(zhuǎn)換為語言片段(Tokens)。解析 Parsing, 將 Tokens 轉(zhuǎn)換成簡單而有意義的表達式。編譯 Compilation,將表達式編譯成Opcode。執(zhí)行 Execution,順序執(zhí)行Opcode,每次一條,以實現(xiàn)PHP代碼所表達的功能。

APC、Opchche 這些擴展可以將Opcode緩存以加速PHP應用的運行速度,使用它們就可以在請求再次來臨時省略前三步。

引擎也實現(xiàn)了基本的數(shù)據(jù)結(jié)構、內(nèi)存分配及管理,提供了相應的API方法供外部調(diào)用。

Extensions 擴展

常見的內(nèi)置函數(shù)、標準庫都是通過extension來實現(xiàn)的,這些叫做PHP的核心擴展,用戶也可以根據(jù)自己的要求安裝PHP的擴展。

SAPI

SAPI 是 Server Application Programming Interface 的縮寫,中文為服務端應用編程接口,它通過一系列鉤子函數(shù)使得PHP可以和外圍交換數(shù)據(jù),SAPI 就是 PHP 和外部環(huán)境的代理器,它把外部環(huán)境抽象后,為內(nèi)部的PHP提供一套固定的,統(tǒng)一的接口,使得 PHP 自身實現(xiàn)能夠不受錯綜復雜的外部環(huán)境影響,保持一定的獨立性。

通過 SAPI 的解耦,PHP 可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現(xiàn)不同的處理方式。

上層應用

程序員編寫的PHP程序,無論是 Web 應用還是 Cli 方式運行的應用都是上層應用,PHP 程序員主要工作就是編寫它們。

總結(jié)

這些東西如果你學習過 android 開發(fā)理解起來顯然更容易,因為android的架構和PHP的這種架構看起來很相似。當你理解這些后你就會理解為什么PHP的創(chuàng)始人會說PHP開發(fā)其實是不需要框架的,因為PHP的設計本身就是一個類似框架的東西,如果用汽車比喻的話PHP本身就是就是車的骨架,Zend的是引擎,Ext是輪子,方向盤等車的組件,SAPI 就是路。

對于這些內(nèi)容,可能有的人覺得有點無用,因為很多人偏執(zhí)的認為自己只是個開車的,為什么開車的要了解車子是怎么跑起來的,對于了解如何制造一輛車更是嗤之以鼻。我曾經(jīng)也這樣認為,直到翻譯Laravel文檔時,Laravel 的作者給了我一些啟發(fā),也把這些話送給看到這個文章的你們:

使用「現(xiàn)實世界」中的任何工具時,如果理解這個工具的運作原理,那么你會更加得心應手的使用這個工具。應用開發(fā)也是這樣。當你明白你的開發(fā)工具如何運行的,你就會對它們的使用游刃有余。

這篇文檔的目的是讓你更好的理解 Laravel 框架如何進行工作及它的工作原理。通過對框架進行全面的了解,一切都不會那么「神奇」,也將會讓你更有自信的構建你的應用。

以上就是PHP是什么-PHP的架構及原理概述的詳細內(nèi)容,感謝大家的學習和對腳本之家的支持。

相關文章

  • PHP OPP機制和模式簡介(抽象類、接口和契約式編程)

    PHP OPP機制和模式簡介(抽象類、接口和契約式編程)

    本文將介紹抽象類、接口和一種稱為契約式編程的技術。使用這些OPP機制,所編寫的代碼就不限于只能計算或者輸出內(nèi)容了。這些機制能夠在概念層次上定義類之間交互作用的規(guī)則,也為應用程序的擴展和定制提供了基礎。
    2014-06-06
  • 詳解php偽造Referer請求反盜鏈資源

    詳解php偽造Referer請求反盜鏈資源

    這篇文章主要介紹了詳解php偽造Referer請求反盜鏈資源,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • dedecms中使用php語句指南

    dedecms中使用php語句指南

    dedecms是廣大站長們比較喜歡也經(jīng)常使用的一款文章管理系統(tǒng),使用方便,今天我們來研究下dedecms中如何使用php語句,有相同需求的小伙伴們可要看仔細了。
    2014-11-11
  • php之二維數(shù)組排序問題

    php之二維數(shù)組排序問題

    這篇文章主要介紹了php之二維數(shù)組排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Laravel Eloquent ORM 實現(xiàn)查詢表中指定的字段

    Laravel Eloquent ORM 實現(xiàn)查詢表中指定的字段

    今天小編就為大家分享一篇Laravel Eloquent ORM 實現(xiàn)查詢表中指定的字段,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php使用lua+redis實現(xiàn)限流,計數(shù)器模式,令牌桶模式

    php使用lua+redis實現(xiàn)限流,計數(shù)器模式,令牌桶模式

    這篇文章主要介紹了php使用lua+redis實現(xiàn)限流,計數(shù)器模式,令牌桶模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • yii2中dropDownList實現(xiàn)二級和三級聯(lián)動寫法

    yii2中dropDownList實現(xiàn)二級和三級聯(lián)動寫法

    本篇文章主要介紹了yii2中dropDownList實現(xiàn)二級和三級聯(lián)動寫法 ,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • 分享下頁面關鍵字抓取components.arrow.com站點代碼

    分享下頁面關鍵字抓取components.arrow.com站點代碼

    這篇文章主要介紹了分享下頁面關鍵字抓取components.arrow.com站點代碼的相關資料,需要的朋友可以參考下
    2014-01-01
  • HTTP中header頭部信息詳解

    HTTP中header頭部信息詳解

    這篇文章主要介紹了HTTP中header頭部信息詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 利用php+mysql來做一個功能強大的在線計算器

    利用php+mysql來做一個功能強大的在線計算器

    有天在努力的搜索計算器,發(fā)現(xiàn)都是JavaScript,而且要一個個地點擊,并且不能記錄,輸入計算式子時容易出錯,于是就想了想該怎樣才能讓它好用點呢,能夠用鍵盤直接輸入。
    2010-10-10

最新評論