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