PHP是一種服務(wù)器端腳本語言,常用于網(wǎng)站的開發(fā)與編程。PHP 5.4和5.5是PHP編程語言的兩個版本,相較于前一版本來說,它們有著一些新的特性和改進。本文將重點討論這些變化以及它們對于PHP程序員來說意味著什么。
在PHP 5.4中,實現(xiàn)了一項重要的特性——trait。Trait的實現(xiàn)方式使得開發(fā)者可以在一個類中添加多重繼承,這種方式可以被認(rèn)為是低成本的多繼承,同時解決了多重繼承的幾個常見問題。例如:
trait foo { public function bar() { return 'bar'; } } class A { use foo; } class B extends a { public function baz() { return $this->bar(); } } $b = new B(); echo $b->bar(); echo $b->baz();這個示例代碼中,trait foo定義了一個公共的方法bar。類A繼承trait foo,并且類B繼承類A。與此同時,類B也實現(xiàn)了一個方法baz,方法體內(nèi)調(diào)用了繼承自trait的方法bar。在最終的輸出結(jié)果中,該程序返回了字符串“bar”,證明了這個方法已經(jīng)成功被調(diào)用。 在PHP 5.5之后,該語言又實現(xiàn)了多項新特性,其中大多數(shù)特性著眼于該語言的易用性和效率,同時也涉及到了該語言的安全性。其中最顯著的變化之一是引入了生成器,這是一種新的函數(shù)類型,它使得PHP 5.5中的代碼更加高效、簡潔:
function counter($start, $end) { for ($i = $start; $i<= $end; ++$i) { yield $i; } } foreach (counter(0, 3) as $num) { echo $num; }在這個生成器的示例代碼中,函數(shù)counter接收起始點和結(jié)束點兩個參數(shù)。函數(shù)內(nèi)部使用了yield關(guān)鍵詞來返回值,循環(huán)任務(wù)會在這里停止,等到需要獲取下一個任務(wù)結(jié)果的時候再次恢復(fù)。在foreach循環(huán)中,我們可以使用它們并遍歷它們。 PHP 5.5的另一個重要變化是加入了一個叫做OpCache的字節(jié)碼緩存擴展,這擴展會最終導(dǎo)致更快的PHP頁面加載時間。在加載一個PHP文件時,PHP編譯器需要將代碼轉(zhuǎn)義為字節(jié)碼,然后再執(zhí)行。在一些需要重復(fù)執(zhí)行的情形下,這些行為可能會被反復(fù)執(zhí)行導(dǎo)致性能瓶頸。通過開啟緩存,我們可以減少這種情況發(fā)生的次數(shù),提高代碼運行效率。 最后,PHP 5.5還新增了一個安全的密碼哈希API(password_hash()),這是與crypt庫相比的難以破解的方案,并支持更先進的哈希算法,如bcrypt:
//Simple password hashing with bcrypt: $hash = password_hash('12345', PASSWORD_BCRYPT); //This will output something similar to: // $2y$10$JzWbe2Hi357XjjfcxP6qqewvpYdW9syxMxXTp6hmVReKxbeo9vP6. //To verify a password against a hash: $options = ['cost' => 10]; if (password_verify('12345', $hash)) { // Success! }總結(jié)來說,PHP 5.4和5.5的差異明顯。PHP 5.4提供了一個新的多重繼承的特性——trait,而PHP 5.5則引入了更多的高效性、安全性特性,如深度優(yōu)化的生成器和密碼哈希API。如果你想要在使用PHP進行編程時更加高效、安全、可靠,那就抓住這兩個版本來優(yōu)化你的開發(fā)過程吧。