PHP 是一個靈活的動態語言,支持多種編程技巧。這幾年一直不斷的發展,重要的里程碑包含 PHP 5.0 (2004) 增加了完善的面向對象模型,PHP 5.3 (2009) 增加了匿名函數與命名空間以及 PHP 5.4 (2012) 增加的 traits。
### 面向對象編程
PHP 擁有完整的面向對象編程的特性,包括類,抽象類,接口,繼承,構造函數,克隆和異常等。
* [閱讀 PHP 面向對象編程](http://php.net/language.oop5)
* [閱讀 Traits](http://php.net/language.oop5.traits)
### 函數式編程 Functional Programming
PHP 支持函數是「第一等公民」,即函數可以被賦值給一個變量,包括用戶自定義的或者是內置函數,然后動態調用它。函數可以作為參數傳遞給其他函數(稱為高階函數),也可以作為函數返回值返回。
PHP 支持遞歸,也就是函數自己調用自己,但多數 PHP 代碼使用迭代。
自從 PHP 5.3 (2009) 之后開始引入對閉包以及匿名函數的支持。
PHP 5.4 增加了將閉包綁定到對象作用域中的特性,并改善其可調用性,如此即可在大部分情況下使用匿名函數取代一般的函數。
* 學習更多?[PHP 函數式編程](http://laravel-china.github.io/php-the-right-way/pages/Functional-Programming.html)
* [閱讀匿名函數](http://php.net/functions.anonymous)
* [閱讀閉包類](http://php.net/class.closure)
* [更多關于 Closures RFC](https://wiki.php.net/rfc/closures)
* [閱讀 Callables](http://php.net/language.types.callable)
* [閱讀動態調用函數?`call_user_func_array()`](http://php.net/function.call-user-func-array)
### 元編程
PHP 通過反射 API 和魔術方法,可以實現多種方式的元編程。開發者通過魔術方法,如?`__get()`,?`__set()`,?`__clone()`,?`__toString()`,?`__invoke()`,等等,可以改變類的行為。Ruby 開發者常說 PHP 沒有?`method_missing`方法,實際上通過?`__call()`?和?`__callStatic()`?就可以完成相同的功能。
* [閱讀魔術方法](http://php.net/language.oop5.magic)
* [閱讀反射](http://php.net/intro.reflection)
* [閱讀重載](http://php.net/language.oop5.overloading)
- 歡迎
- 入門指南
- 使用當前穩定版本
- 內置的WEB服務器
- Mac安裝
- Windows安裝
- 代碼風格指南
- 語言亮點
- 編程范式
- 命名空間
- PHP標準庫
- 命令行接口
- Xdebug
- 依賴管理
- Composer 與 Packagist
- PEAR
- 開發實踐
- 基礎知識
- 日期和時間
- 設計模式
- 使用UTF8編碼
- 依賴注入
- 基本概念
- 復雜的問題
- 容器
- 延伸閱讀
- 數據庫
- MYSQL 擴展
- PDO 擴展
- 數據庫交互
- 數據庫抽象層
- 使用模板
- 好處
- 原生PHP模板
- 編譯模板
- 延伸閱讀
- 錯誤與異常
- 錯誤
- 異常
- 安全
- Web應用程序安全
- 密碼哈希
- 數據過濾
- 配置文件
- 注冊全局變量
- 錯誤報告
- 測試
- 測試驅動開發
- 行為驅動開發
- 其他測試工具
- 服務器與部署
- Platform as a Service (PaaS)
- 虛擬或專用服務器
- 共享服務器
- 構建及部署應用
- 虛擬化
- Vagrant
- Docker
- 緩存
- Opcode緩存
- 對象緩存
- 文檔撰寫
- 資源
- 社區
- Credits