PHP慶祝25週年朝著8.0版本繼續努力
2020年6月8日,PHP迎來了自己的25周歲生日。JetBrains在博客中梳理了該語言自1995年誕生以來的種種歷程,這種語言最初是用C語言編寫的一組通用網關接口(Common Gateway Interfac,CGI)二進製文件,第一個PHP腳本套件被稱為“個人主頁工具”或“PHP工具”。
1998 年發布的PHP 的第三次迭代是Andi Gutman 和Zeev Suraski 重寫了Lerdorf 編寫的現有解釋器的結果。JetBrains 解釋稱,此版本的PHP 3.0 很像現在的PHP 的第一個版本。語言的名稱改為遞歸縮寫“PHP: Hypertext Preprocessor”。頂峰時,PHP 3 安裝在互聯網大約10% 的Web 服務器上。1999年,Zend 公司成立,直到今天,Zend 仍在繼續為PHP 做出貢獻並積極參與其中。
最初沒有PHP 的正式規範,在著這種情況下該語言仍持續發展了20 年的時間。直到2014 年,PHP 規範出現。PHP 語言規範在Facebook 內部開發,然後轉移到了公共領域。
而與此同時,除了這個25週年紀念日外,PHP 8.0也有望在今年發布。程序員 Brent Roose透露了即將在2020年11月底發布的PHP 8.0中即將發布的功能。此版本的第一個Alpha版將於6月18日發布。同時,PHP 8.0將引入多項重大更改,並引入一些新功能,例如JIT編譯器、聯合類型和屬性。
JIT 編譯器
Roose解釋稱,儘管還沒有基準測試,但JIT編譯器有可能改善PHP的性能。不像C或Java這樣的編譯語言,PHP是一種解釋性語言,這意味著它會在運行時轉換為機器碼。JIT在運行時編譯部分代碼,以便可以使用代碼的編譯版本。並表示,將JIT編譯器添加到PHP的原因是,它可能使其能夠在Web開發上下文之外被視為一種高性能語言,並且可以隨著時間的流逝而得到改進。但是,一個很大的缺點是維護起來很複雜。
聯合類型
聯合類型是兩種或多種類型的集合,表示可以使用其中任何一種。而由於PHP 是一種動態類型的語言,因此聯合類型有很多用例。
屬性
屬性在其他語言中通常稱為註解,它提供了一種向類添加元數據的方法,而無需解析文檔塊。
RFC 中的屬性示例:
use AppAttributesExampleAttribute; <<ExampleAttribute>> class Foo { <<ExampleAttribute>> public const FOO = 'foo'; <<ExampleAttribute>> public $x; <<ExampleAttribute>> public function foo(<<ExampleAttribute>> $bar) { } }
<<Attribute>> class ExampleAttribute { public $value; public function __construct($value) { $this->value = $value; } }
有關功能和代碼示例的完整列表可查看:https://stitcher.io/blog/new-in-php-8