读《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 于 7年前 加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7
leo

yield 全程拼错 :joy:

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!