上一次修改时间:2018-06-26 19:47:58

php编码技巧

  1. 主要内容

    image.png

  2. 编码的四项原则

    image.png

    image.png

  3. 编码习惯

    QQ图片20180626151757.png

    QQ图片20180626151911.png

    变量命名注意事项

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

    注:如果return的变量没有初始化,且数据查询为空时,会产生一个Notice错误;

    image.png

    image.png

    注:数组里的索引如果没加单引号,php引擎会先去常量里找,再到数据里找,比较浪费资源;

    image.png

    注:防止比较符==,被错写成赋值符=;

    image.png

    image.png 

    image.png

    image.png

    image.png

    image.png 

    注:php官方也建议纯php代码里不要结束标记,如果有结束标记,在其它代码引用该文件时,结束标记后面的空格或其它输入,有可能会影响到其它代码,而且不好排错; 

    image.png

    image.png 

    QQ图片20180626154935.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png 

    image.png

    image.png 

    注:以上代码为用Php的内置函数来验证邮件地址,及返回文件的扩展名; 

    QQ图片20180626155633.png

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

  4. php语法糖

    image.png

    image.png

    image.png

    image.png

    注:echo的内容里,用连接符号时,会产生一个额外连接操作,所以效率较低;

    image.png

    image.png

    image.png

    注:$i+=1是中会用到一条opcode,而$i=$i+1会占用额外的临时空间,且会执行两条opcode;

    QQ图片20180626172558.png 

    image.png

    image.png

    QQ图片20180626173328.png 

    QQ图片20180626173428.png

    注:php的语言结构是不能当成可变函数来使用的,例如$str = 'trim'; echo $str(' pika qiu   ');,该行代码是可以正确执行的,但$e = 'echo';$e 'pikaqiu'; ,这行代码是报语法错误的,这种方法也常用来确认是函数还是语言结构;  另外,语言结构的效率要高于函数

    image.png

    image.png

    image.png

    注:如上图,例如将'iao' 替换成'obc'时,strtr中会循环一次,而str_replace会循环三次;

    image.png

    image.png

    image.png

    注:yield协程可以节省运行内存;

    image.png

    QQ图片20180626175213.png

    image.png

    image.png

    image.png

    注:位运算是效率最高的,但位运算只适用于2的n次方相关的运算; 

    image.png

    QQ图片20180626175551.png

    QQ图片20180626175833.png

    QQ图片20180626180015.png 

    image.png

    QQ图片20180626180231.png

    注:该运算符是Php7.0开始支持的,如上图代码,使用??后,就算$_GET['username']没有这个变量的存在,也不会报notice的错误;

    image.png

    上图中比较运算符的代码等同下面的这个:

    image.png

    image.png

    image.png 

  5. php代码优化

    QQ图片20180626181815.png

    QQ图片20180626182041.png

    QQ图片20180626182138.png

    image.png

    QQ图片20180626182439.png

    QQ图片20180626182623.png

    QQ图片20180626183324.png

    QQ图片20180626183419.png

    QQ图片20180626184837.png

    QQ图片20180626185231.png

    QQ图片20180626185516.png

    QQ图片20180626185642.png

    image.png

    image.png

  6. php重点新特性

    QQ图片20180626190110.png

    QQ图片20180626190733.png

    image.png

  7. php编码规范

    https://github.com/PizzaLiu/PHP-FIG

    QQ图片20180626192202.png

  8. php坑人小题

    QQ图片20180626192655.png

    注:输入结果为1和6,image.png,||运算符的优先级比赋值运算符高,所以该代码等同于$a = (5 || $b =7),此时$a = true,自增和自减对布尔类型的变量是无效的,所以$a一直是true;

    image.png

    注:上面代码输出结果为1,函数里面的$count为静态变量static $count;

    image.png

    注:count(null)为0,count(false)为1,因此输出结果为2;

    image.png

    注:输出结果为false,计算机表达浮点数时,都是用的近似值; 

  9. 总结

    QQ图片20180626194500.png