读《Modern PHP》笔记

读这本书感觉真的是一个前辈给后辈的敦敦教诲,颇费苦心。

我在这里列一下这本书的精华,供大家参考。

使用接口#

依赖接口,而非具体实现,可以解耦,参考 Laravel 的契约

性状(trait)#

这个特性很有意思,名字名副其实。
假如现在有一个人,还有一辆车,车和人都要实现给自己定位的功能,显然车和人不适合从一个父类继承,那这个时候 trait 就排上用场了。这是一个横向复用机制,让若干不想关的类带上同样一个性状。
http://php.net/manual/zh/language.oop5.tra...

生成器(yield)#

这个特性也很有用,yield 和 return 类似,区别在于 yield 只产出值,不返回值。
也可以这样理解,return 是一次性全部交付给你,yield 是承诺全部交付给你,但这次先把你现在用到的东西给你,剩下的下次你再来取。
显然,在迭代一个超大数据的时候(遍历超大数组),yield 可以先给你一个元素,不用生成整个数组,可以省内存。

上代码:

<?php
function makeRange($length){

    $arr=[];

    for($i=0;$i<$length;$i++) $arr[]=$i;

    return $arr;

}

$results=makeRange(100000);

foreach($results as $i) echo $i.PHP_EOL;  

代码 2:

<?php

function makeRange($length){

    $arr=[];

    for($i=0;$i<$length;$i++) yield $i;

}

foreach(makeRange(100000) as $i) echo $i.PHP_EOL;

第一个是先生成一整个数组再遍历,第二个是一边生成一边遍历。
http://php.net/manual/zh/language.generato...

闭包,命名空间,opcache#

PSR,组件,composer#

这三个东西对现代 PHP 意义特别重大,选择可复用组件就是选择了未来,细分领域让最专业的人去做。

过滤,验证,转义(防注入和防 XSS)#

输入和输出要过滤 html,使用 htmlentities($str, ENT_QUOTES, "UTF-8"); 第二个参数开启转义单双引号,第三个参数指明字符集,都是必须开启的。

使用 PHP 自带过滤和验证函数
filter_input()
http://php.net/manual/zh/function.filter-i...

filter_var()
http://php.net/manual/zh/function.filter-v...

数据库#

使用 PDO 和预处理

密码#

使用内置的密码函数,使用 bcrypt 加密

password_hash()
http://php.net/manual/zh/function.password...

password_verify() http://php.net/manual/zh/function.password...

多字节字符串#

使用 mb 系列函数

流处理,错误和异常,自动部署,持续测试#

本帖已被设为精华帖!
本帖由 Summer 于 8年前 加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7
leo

yield 全程拼错 :joy:

8年前 评论

同样,这是我最喜欢的一本 php 的书

8年前 评论

值得细嚼慢咽的一本书,正在看,希望能有很多收获

8年前 评论

嗯,这本书真的好,把 php 新特性说的很全,好多不熟悉的知识点。一起加油

8年前 评论

这是一本很好的中阶 PHP 书籍,值得翻多遍。
我发现市面上都没有啥优秀的初阶 PHP 书籍

8年前 评论

@Summer 你是要出叼炸天的 PHP 初阶教材吗

8年前 评论