读书笔记:《Modern PHP》

1. 特性

        1.1 命名空间的使用

        1.2 接口的使用

                接口把代码和依赖解耦,而且允许我们的代码依赖任何实现了预期接口的第三方代码。不管第三方代码是如何实现接口的,我们只关心第三方代码是否实现了指定的接口。

        1.3 性状(trait)

                php5.4.0引入的新概念,既像类又像接口。性状是类的部分实现,可以混入一个或者多个现有的php类中。性状有两个作用:表明类可以做什么(像是接口),提供模块化实现(像是类)

        1.4 生成器(generator)

                php5.5.0引入的功能。生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组,那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样,和普通函数只返回一次不同的是,生成器可以根据需要 yield 多次,以便生成需要迭代的值。

        1.5 闭包和匿名函数

                闭包和匿名函数是php5.3.0中引入的。php里面讲闭包跟匿名函数视为相同的概念,注意区别JS里面的闭包

        1.6 Zend OPcache

        1.7 内置的http服务器

                php5.4.0起,php内置了Web服务器。


2. 标准

        2.1 PHP-FIG

                PHP Framework Interop Group。PHP-FIG是由一些框架的代表组成,这些人聚在一起“讨论项目之间的共性,寻找可以合作的方式”

        2.2 框架的互操作性

                接口,自动加载,风格

        2.3 PSR

                PSR是PHP Standars Recommendation的缩写。

                PSR-1:基本的代码风格

                PSR-2:严格的代码风格

                PSR-3:日志记录器接口

                PSR-4:自动加载


3. 组件

        3.1 什么是组件

                通俗地讲,就是一组打包的代码,用于解决PHP应用中的某一类具体问题。严格来讲,PHP组件是一系列相关的类,接口和性状,用于解决某个具体的问题。

        3.2 组件的特征

                作用单一,小型,合作,测试良好,文档完善

        3.3 组件和框架对比

                使用正确的工具做正确的事

        3.4 composer的使用

                composer是PHP组件的依赖管理器,学会使用方法,和packagist结合使用

        3.5 创建PHP组件

                学会如何创建php组件,并提交到packagist


4. 过滤,验证和转义

        4.1 过滤输入

                了解php相关的过滤函数

        4.2 验证数据

                了解php相关的验证函数

        4.3 转义输出

                了解php相关的转义函数


5. 密码

        5.1 绝对不能知道用户的密码

        5.2 绝对不要约束用户的密码

        5.3 绝对不能通过电子邮件发送用户的密码

        5.4 使用bcrypt计算用户密码的哈希值

                bcrypt被故意设计得很慢,自动加盐


6. 日期,时间和时区

        6.1 设置默认时区

        6.2 DateTime 类

                学习使用方法

        6.3 DateInterval 类

                学习使用方法

        6.4 DateTimeZone 类

                学习使用方法

        6.5 DatePeriod 类

                学习使用方法


7. 数据库

        7.1 PDO扩展

                使用PDO的时候,需要自己编写sql语句。建议使用PDO时编写符合ANSI/ISO标准的sql语句,这样的话在更换数据库系统时不用更新sql语句

        7.2 数据库连接和DSN