2023-11-29 分類: 網(wǎng)站建設(shè)
LAMp 堆棧有了新的競爭,但此版本中的功能再次將 pHp 推向了極限。
2012 年 4 月發(fā)布
大約八年前,我為 寫了一篇名為“你知道 pHp 嗎?”的文章。 在那篇文章中,我談到了 pHp 對“Web 問題”的頑固的功能優(yōu)于形式的解決方案及其使事情變得簡單的能力。 當(dāng)時,我們即將發(fā)布 pHp 5.0。 現(xiàn)在,在將近十年之后,我們有了全新的 pHp 5.4.0 版本,雖然在此期間發(fā)生了很多事情,但很多事情根本沒有改變。
沒有改變的一件事是生態(tài)系統(tǒng)一如既往地重要。 解決 web 問題不僅僅是腳本語言的選擇,而是圍繞它的整個生態(tài)系統(tǒng)。 現(xiàn)在將近 15 年了,LAMp 架構(gòu)仍然很流行,但我們開始注意到其他強(qiáng)大的選項(xiàng)。 隨附的 pHp-FpM 迅速流行起來,因?yàn)樽?pHp 5.3 以來支持得到了極大改進(jìn),并在 5.4 中進(jìn)一步簡化。 系統(tǒng)的 M(即數(shù)據(jù)庫)部分也開始看起來與 8 年前大不相同。 各種解決方案提供了更豐富的選擇,而不僅僅是將所有內(nèi)容都放入表格中。
那里有許多有趣的技術(shù),因此我們編寫了 pHp 擴(kuò)展來輕松訪問它們。 我最喜歡的擴(kuò)展之一是您可以使用它在 pHp 中編寫事件驅(qū)動的高性能應(yīng)用程序。 另一個是,這是一個高級套接字庫。 就像不需要編寫另一種原始文件格式和相關(guān)的解析器一樣,也沒有任何理由使用套接字協(xié)議和相關(guān)的套接字處理代碼。 您甚至可以組合并獲得一個獨(dú)立的、高性能的、事件驅(qū)動的高級服務(wù)器。 (如果您有興趣,請參閱此示例。)我也非常喜歡 SVM(支持向量機(jī))機(jī)器學(xué)習(xí)算法,您不必成為機(jī)器學(xué)習(xí)迷也可以問很多問題。
還有許多擴(kuò)展在最近幾年獲得了廣泛的認(rèn)可。 特別是流行起來php框架性能測試,逐漸成為用戶部署的通用架構(gòu)的一部分。 您可以分派作業(yè),以便它們由工作人員異步完成。 可以分布在多個服務(wù)器上,甚至可以進(jìn)一步分派到更多類型的工作中。
2004 年發(fā)布 pHp 5.0,2005 年發(fā)布 5.1,增加了實(shí)現(xiàn)、pDO 和性能改進(jìn)。 pHp 5.2 于 2006 年發(fā)布,引入了改進(jìn)的內(nèi)存管理器、JSON 支持和輸入過濾。 當(dāng)時,我們著手推動 pHp 6,這是一個非常雄心勃勃的計(jì)劃,要徹底重寫 ICU(國際化組件)庫的所有內(nèi)容。 事實(shí)證明,這個計(jì)劃很倉促——我們無法讓足夠多的開發(fā)人員對此感到興奮,最終將 pHp 6 中將要引入的各種特性添加到 2009 年發(fā)布的 pHp 5.3 5.2 和 5.3 版本中相隔 3 年,這也意味著 5.3 為 pHp 增加了很多內(nèi)容:命名空間、后期靜態(tài)綁定、閉包、垃圾收集、受限的 goto、(本機(jī)驅(qū)動程序)、更好的性能等等。
事后看來,將此版本稱為 pHp 6 可能有些道理php框架性能測試,但 pHp 6 等同于編寫有關(guān)它的書籍的努力,因此我們認(rèn)為如果不對 pHp 6 進(jìn)行重大改進(jìn),則無法發(fā)布。 我們引入了一個名為“intl”的 ICU 擴(kuò)展,它也是針對 pHp 5.2 編譯的,它使您可以訪問更多 ICU 功能。 隨著時間的推移,擴(kuò)展不斷改進(jìn),這意味著幾乎所有與 相關(guān)的問題都有解決方案,只是沒有明確地集成到語言本身。
這導(dǎo)致了 2012 年 pHp 5.4 的推出。此外,自上次發(fā)布以來已經(jīng)過去了將近 3 年,在此期間我們進(jìn)行了一些改進(jìn)。 我寧愿恢復(fù)到每年一個版本,每個版本包含更少的新功能。
以下是升級到 5.4 后您將看到的主要功能:
內(nèi)存和性能改進(jìn)
許多內(nèi)部結(jié)構(gòu)已變得更小或完全消失,從而在大型 pHp 應(yīng)用程序中節(jié)省了 20-50% 的內(nèi)存。 通過各種優(yōu)化將性能提高 10-30%(主要取決于代碼在做什么)網(wǎng)站模板,包括內(nèi)聯(lián)各種通用代碼路徑、將 $ 添加到 JIT、使“@”運(yùn)算符更快、添加運(yùn)行時類/函數(shù)/常量緩存,運(yùn)行時字符串常量現(xiàn)在被保留,通過預(yù)先計(jì)算的散列更快地訪問常量,空數(shù)組更快并且使用更少的內(nèi)存,()和請求處理得更快,以及整個代碼中更多的內(nèi)存和性能調(diào)整。
例如,一些早期測試表明,Zend 在 5.4 中運(yùn)行速度提高了 21%,內(nèi)存使用量減少了 23%,而內(nèi)存使用量減少了 50%,運(yùn)行速度提高了大約 7%。
可能是 pHp 5.4 中最受關(guān)注的功能 — 將它們視為編譯器輔助的復(fù)制粘貼。 這也是 . 其他語言可能稱它們?yōu)椤啊薄蛘吣切┱Z言根本不給它們命名,而是有一個擴(kuò)展的接口機(jī)制,允許一個接口包含其方法的實(shí)際實(shí)現(xiàn)。
相比之下,pHp 包含針對同一方法的多個實(shí)現(xiàn)的顯式?jīng)_突解決機(jī)制。
{
() { ... }
}
一種 {
利用;
//...
}
乙{
利用;
//...
}
// 現(xiàn)在兩者都適用
一種::();
b::();
請參閱/獲取更多示例,包括沖突解決語法、方法優(yōu)先級、可見性以及對常量和屬性的支持。 此外,要了解有關(guān)概念理論的更多信息,您可以閱讀 Sch?rli 的論文“:行為構(gòu)建塊中的復(fù)合類”。
緊湊數(shù)組語法
添加了一個簡單但非常流行的語法:
$a = [1, 2, 3];
$b = ['foo' => '', 'bar' => ''];
也就是說網(wǎng)站模板,您現(xiàn)在不再需要使用“”關(guān)鍵字來定義數(shù)組。
函數(shù)數(shù)組取消引用
添加了另一個通用語法。 返回?cái)?shù)組的函數(shù)調(diào)用現(xiàn)在可以直接取消引用:
() {
['', '', ''];
}
回聲()[0]; // :
實(shí)例方法調(diào)用
與函數(shù)數(shù)組取消引用相關(guān),您現(xiàn)在可以調(diào)用對象實(shí)例化方法。 與早期版本一樣,您當(dāng)然仍然可以鏈接方法調(diào)用,因此您現(xiàn)在可以編寫如下代碼:
富 {
$x = 1;
getX() {
$這個->x;
}
setX($val) {
$this->x = $val;
$這個;
}
}
$X = (new foo)->setX(20)->getX();
回聲 $X; // 20
但是,除非您的構(gòu)造函數(shù)執(zhí)行有用的操作,否則您應(yīng)該在此處使用靜態(tài)方法調(diào)用,因?yàn)榭赡軙G棄實(shí)例化對象。 如果我們將其與緊湊的數(shù)組語法和函數(shù)數(shù)組解引用結(jié)合起來,我們可以編寫一些非常復(fù)雜的代碼:
富 {
($arr) {
::($arr);
}
}
echo (new foo( [1, [4, 5], 3] ))[1][0];
看了之后,你能說出輸出是什么嗎? 在這里,我們將一個二維數(shù)組傳遞給一個只返回?cái)?shù)組的構(gòu)造函數(shù)。 然后,我們選擇第二個維度的第一個元素,所以這將輸出“4”。
閉包綁定
閉包是在 pHp 5.3 中引入的,但在 5.4 中我們改進(jìn)了閉包與對象交互的方式。 例如:
富{
$道具;
($prop) {
$this->prop = $prop;
}
() {
() { echo ($this->prop); };
}
}
$a = new Foo('酒吧');;
$func = $a->();
$函數(shù)(); // : 酒吧
請注意,閉包訪問私有屬性 $this->prop。 默認(rèn)情況下,pHp 中的閉包使用預(yù)綁定——這意味著閉包內(nèi)的變量具有定義閉包時的值。 這可以使用引用轉(zhuǎn)換為反向綁定。 但是,也可以重新綁定閉包:
$a = new Foo('酒吧');
$b = new Foo('');
$func = $a->();
$函數(shù)(); // : 酒吧
$func = $func->($b);
$函數(shù)(); // :
在這里,我們將閉包從 $a 實(shí)例重新綁定到 $b 中的實(shí)例。 如果你不想讓閉包在任何時候訪問對象實(shí)例,你可以將閉包聲明為靜態(tài)的:
富{
$道具;
($prop) {
$this->prop = $prop;
}
() {
() { echo ($this->prop); };
}
}
$a = new Foo('酒吧');;
$func = $a->();
$函數(shù)(); // : $this 不在的時候
作為函數(shù)的對象
有一種名為“”的新魔術(shù)方法,其用法如下:
{
$;
($價值) {
$this->= $val;
}
() {
('$%.2f', $this->);
}
}
$ = 新的 (11.02/5*13);
回聲 $(); // : 28.65 美元
內(nèi)置網(wǎng)絡(luò)服務(wù)器 (CLI)
CLI 服務(wù)器是一個小型 Web 服務(wù)器實(shí)現(xiàn),可以從命令行運(yùn)行:
%php -S :8000
2012 年 3 月 11 日星期日 13:27:09 的 pHp 5.4.0
在:8080
根目錄是/home/
Ctrl-C 退出。
CLI 服務(wù)器不適合用作生產(chǎn) Web 服務(wù)器; 我們將使用它來運(yùn)行一些 pHp 回歸測試,其他單元測試機(jī)制可以使用它,IDE 也可以使用它。 它確實(shí)具有一些有用的功能,可用于從命令行進(jìn)行日常代碼調(diào)試。 默認(rèn)情況下,它使用當(dāng)前目錄作為; 它還處理靜態(tài)文件請求。 默認(rèn)的目錄索引文件是“.php”,所以你可以在充滿.php、.css、.jpg等的目錄中激活它,它會自動運(yùn)行。 對于可能使用發(fā)送所有請求的前端控制器或路由器的更復(fù)雜的應(yīng)用程序,您可以使用簡單的小腳本包裝此路由器并啟動 CLI 服務(wù)器,如下所示:
% php -S :8080 /路徑/到/.php
2012 年 3 月 11 日星期日 13:28:01 的 pHp 5.4.0
在:8080
根目錄是 /tmp/web
Ctrl-C 退出。
.php 腳本可能如下所示:
當(dāng)前題目:php框架性能測試您了解pHp嗎?的一件事情就是生態(tài)系統(tǒng)一如戰(zhàn)爭框架龍甲性能
本文路徑:http://redsoil1982.com.cn/news27/297377.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、域名注冊、品牌網(wǎng)站制作、全網(wǎng)營銷推廣、定制開發(fā)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容