php 5.4的beta版本即將發布,網上已經出現了很多對於php 5.4新特性介紹的reference,這裡有一份官方的詳細列表可以供參考http://svn.php.net/viewvc/php/php-src...。對於我來說,除了一些bug的修複,最值得期待的是兩方面
效能上的巨大提高
根據一些已知的效能測試來看,對於執行速度基本可以提高一倍左右,而記憶體的使用則降低到上一版本的1/3到1/2。如果最終的發行版能保證這個成績,那麼不得不說這是一個巨大的提高。
- http://www.slideshare.net/paulgao/com...
- http://www.paulgao.com.cn/index.php?i...
新特性的引入
非常有意思的是php 5.4居然引入了scalar中Traits(特質)的概念,熟悉scalar的朋友都知道Traits是一個介於Class和Interface之間的東西,它是抽象的定義,但是跟介面不同的是可以包括實際的方法和成員變數,而跟abstract class不同的是,它可以是多重的!這將讓php的oop特性更加豐富,不過我也悲觀地認為這會讓眾多php的草根們對oop的概念更加混亂:(
trait A{ public function foo();}trait B{ public function bar() { return; }}class C{ use A, B; public function execute() { echo $this->bar(); }}
另一個我比較關心的特性是php 5.4中終於支援全類型的函數類型檢測了,在php 5.3以前我們只能在類型檢測中使用array和Class的檢測,比如
function foo(array input, MyClass key) { return;}
但是php 5.4會支援現在php的所有內建類型了(String,Int,Float,Resource,Bool等等),這樣我們就不用在函數內部寫類似is_string之類的函數了。
還有一個讓無數php開發人員曾經無比糾結的問題,終於在這個php 5.4中修複了(至少我認為是修複)。那就是在函數的傳回值中直接使用數組索引值了
function func () { return array(1, 2, 3);}echo func()[1]; // 輸出2
這個看似理所當然的東西居然要等到php 5.4中才修複,要是早點修複可以節省多少變數,少排放多少二氧化碳啊。
還有一個對php初學者來說的好訊息,那就是php 5.4會包含一個簡單的server,大家不用再去煩惱如何配置apache之類的了。
我所期待的特性
php在我眼裡離一個完美的語言還相差甚遠,但幸好他是一個相當趁手的語言。所以我對它也有我的期待,那就是
增加對服務端持久化的支援,雖然有apc cache之類的東西,但是沒有語言級的解決,還是感覺到不方便。
這裡有一些老外 對php的期許http://www.reddit.com/r/PHP/comments/...,你們自己希望有那些新特性呢?
回複內容:
php 5.4的beta版本即將發布,網上已經出現了很多對於php 5.4新特性介紹的reference,這裡有一份官方的詳細列表可以供參考http://svn.php.net/viewvc/php/php-src...。對於我來說,除了一些bug的修複,最值得期待的是兩方面
效能上的巨大提高
根據一些已知的效能測試來看,對於執行速度基本可以提高一倍左右,而記憶體的使用則降低到上一版本的1/3到1/2。如果最終的發行版能保證這個成績,那麼不得不說這是一個巨大的提高。
- http://www.slideshare.net/paulgao/com...
- http://www.paulgao.com.cn/index.php?i...
新特性的引入
非常有意思的是php 5.4居然引入了scalar中Traits(特質)的概念,熟悉scalar的朋友都知道Traits是一個介於Class和Interface之間的東西,它是抽象的定義,但是跟介面不同的是可以包括實際的方法和成員變數,而跟abstract class不同的是,它可以是多重的!這將讓php的oop特性更加豐富,不過我也悲觀地認為這會讓眾多php的草根們對oop的概念更加混亂:(
trait A{ public function foo();}trait B{ public function bar() { return; }}class C{ use A, B; public function execute() { echo $this->bar(); }}
另一個我比較關心的特性是php 5.4中終於支援全類型的函數類型檢測了,在php 5.3以前我們只能在類型檢測中使用array和Class的檢測,比如
function foo(array input, MyClass key) { return;}
但是php 5.4會支援現在php的所有內建類型了(String,Int,Float,Resource,Bool等等),這樣我們就不用在函數內部寫類似is_string之類的函數了。
還有一個讓無數php開發人員曾經無比糾結的問題,終於在這個php 5.4中修複了(至少我認為是修複)。那就是在函數的傳回值中直接使用數組索引值了
function func () { return array(1, 2, 3);}echo func()[1]; // 輸出2
這個看似理所當然的東西居然要等到php 5.4中才修複,要是早點修複可以節省多少變數,少排放多少二氧化碳啊。
還有一個對php初學者來說的好訊息,那就是php 5.4會包含一個簡單的server,大家不用再去煩惱如何配置apache之類的了。
我所期待的特性
php在我眼裡離一個完美的語言還相差甚遠,但幸好他是一個相當趁手的語言。所以我對它也有我的期待,那就是
增加對服務端持久化的支援,雖然有apc cache之類的東西,但是沒有語言級的解決,還是感覺到不方便。
這裡有一些老外 對php的期許http://www.reddit.com/r/PHP/comments/...,你們自己希望有那些新特性呢?
所有的特性我都很期待!不過同時也看出來php知道來自ruby等後起之秀的壓力了,其實這裡面的新特性對於相對較新的指令碼語言來說都不是什麼新東西了。
另外內建的server我覺得也是再向ruby看齊吧(ruby gem裡面有一個用ruby寫的server,rails裡面就在用這個)在開發環境中用還是能擷取一定方便的。
另外 @joyqi 說的持久化也是我期待的東西,php目前的特性導致在跑一些經常啟動並執行重複工作,比如大部分架構的初始化工作的時候都會佔用過多計算資源。
下面是我對各個新特性的感受:
- trait: php終於可以完美實現aop了
- 全類型函數檢測: api設計者淚流滿面
- 函數傳回值直接使用數組索引值: phper不再羨慕javascript等程式員了
http://www.slideshare.net/paulgao/com...
我這個 PPT 內容會隨著 5.4 的進展進行更新的。希望各位持續關注。
非常抱歉,我這個ppt裡關於 scalar type hint 的描述是錯誤的,PHP Team 在產生5.4分支的最後的時刻,將這個特性拿掉了,大體原因可能是實現的不夠完美吧。我當時沒有注意到,以為這個特性還繼續存在在代碼裡。在這裡說一聲抱歉。ppt 已經更新。
對於我們做營運,最期待的是效能的提升!
包含一個server這點很有趣, 這個server是php寫的嗎?
PHP 5.4 alpha1剛剛發布了。
新增特性:
Added: Traits language construct
Added: Array dereferencing support
Added: DTrace support
Improved: Improved Zend Engine memory usage and performance
Moved: ext/sqlite moved to pecl (sqlite3 support is still built-in)
刪除特性:
Removed: break/continue $var syntax
Removed: register_globals, allow_call_time_pass_reference, and register_long_arrays ini options
Removed: session_is_regisitered(), session_registered(), and session_unregister()
This is the first release that adopts the releaseprocess RFC. The next alpha will be >released within four weeks. The PHP 5.4 feature set and API has not been finalized.
更多詳細
http://www.php.net/archive/2011.php#i...
希望能更多的支援svn的操作函數,以前的版本裡面好多的svn的函數的說明都是空白,而我要用,感覺有點當小白鼠的感覺。
php5.4已經正式發布了。google上這篇問答排在第一位。