PHP 5.4文法改進與棄用特性_PHP教程

來源:互聯網
上載者:User
PHP 5.4於本月塵埃落定,它是 PHP 自 2009 年以來的首次重大更新。該版本對語言部分進行了增強,包括支援 Traits 和移除部分爭議特性。

Traits

同 Java 和 .NET 一樣,PHP 使用單一繼承模型。雖然這種模型足夠應付大部分用例情境,但有時使用者也需要將一些通用樣板代碼放置其他無關聯的類中。(.NET 的 Dispose 方法就是這類樣板代碼(boiler-plate code)中一個很好的例子。)為解決這樣的問題,PHP5.4推出了 Traits。

Traits 是一個方案集合,它不屬於任何實際類。使用者沒法建立 Trait 執行個體或直接調用 Trait 中的方法,相反,使用者必須將 Traits 合并到實際的類當中方能使用它們。在優先順序方面,Trait 方法會覆蓋繼承而來的同名方法,而當前合并類中的同名方法則會覆蓋 Trait 方法。

Traits 之間擁有相同的優先順序,因此預設情況下,將兩個包含重疊方法名的 Traits 加入到相同類中是個錯誤的做法。當然,使用“insteadof”和“as”操作符可以手工解決衝突,從而避免這個錯誤。此外,“as”操作符還可以用於改變 Trait 的可見度(visibility)。

Traits 中的方法可以是抽象方法,用於支援 Traits 的部分泛化;同時,Traits 也可以對外暴露靜態變數,每個包含 Traits 的類都將擁有該變數的一份拷貝。此外,在 Traits 中已經聲明過的屬性不可以再在包含它的類中聲明。

其他文法改進

其他文法改進包括:

  • 數組現在可以使用方括弧進行聲明,而不再需要使用“array”函數。新的聲明方式除了略微簡潔之外,沒有其他影響;
  • 現在可以直接對函數傳回值進行數組取值。在此之前,函數傳回值的結果必須先存入一個臨時變數中,如:$FirstName = GetNames ()<0>;
  • PHP 5.4 中的閉包現在可以使用“$this”指標,這在以前是不可以的;
  • 現在可以在執行個體化時訪問類成員,如: (new CustomerService)->Delete (customerId);
  • 採用“0b”首碼標識位元。

命令列 Web 服務器

PHP 5.4 提供了自己的 Web 服務器,你可以從命令列中啟動它。該 Web 服務器的設計目的僅在於協助開發,它不會取代你的實際執行網頁伺服器。

棄用特性

備受指責的 Register Globals 已從 PHP 中完全刪除。十年來,該特性一直以其頻繁發生的安全性漏洞而著稱。2002年該特性被設定為預設關閉。2009年發布的 PHP5.3 將該特性標記為“棄用”,想必從那時起,大部分開發人員已經不再使用它。

從 PHP 中移除的另一個不討喜的特性是 Magic Quotes。Magic Quotes 本意是對字串進行自動轉義(escape)以試圖避免 SQL 插入式攻擊。但是由於字串的轉義使用方法常與特定背景相關,因此,比起試圖解決的問題,它反而造成了更多的問題。該特性同 Register Globals 一樣,也在 2009 年被標記為“棄用”。

PHP 中的 break 和 continue 語句之後可以跟上一個參數用來指明跳出的迴圈層數。如果不指定參數,它會像 VB、C#或 Java 一樣跳出最內層的迴圈。在 PHP 5.4 之前,開發人員可以向 break 語句傳遞一個變數,而現在只能傳遞常量。

PHP 允許參數按引用傳遞。在早期版本中,你可以通過為調用點添加修飾來指明變數按引用傳遞。在 PHP 5.4 中,該選項已被移除。相反,現代 PHP 編程只需要在函式宣告時指定按引用傳遞即可。與 C# 不同,你不需要同時在聲明和調用點指定按引用傳遞。

查看英文原文:http://www.infoq.com/news/2012/03/PHP-5.4

http://www.bkjia.com/PHPjc/752330.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752330.htmlTechArticlePHP 5.4於本月塵埃落定,它是 PHP 自 2009 年以來的首次重大更新。該版本對語言部分進行了增強,包括支援 Traits 和移除部分爭議特性。 Tra...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.