一些php建议优化技巧

懒散的作者
2020-11-07 / 0 评论 / 963 阅读 / 正在检测是否收录...

1、比如循环把变量赋值到一个新数组前先定义好初始化。比如

<?php 
//最好养成 先定义一个初始化的数组,要不然会报define的警告的报错,
$newArr = [];
foreach($list as $key =>$vue){
    $newArr = $vue['title'];
}

2、优先使用单引号

$row['id'] 的效率 是$row[id]的7倍;

原因是:不加单引号的row的 里面的id【key】去循环常量里面找,发现没有找到然后就去数组里找这个key。所以浪费了时间,加了单引号直接从数组里找。

3、用 “1 == $a " 替换  " $a ==1"

下面不仔细看的话是没错的,但是$uid是赋值状态,漏了一个等于号! 所以是永远是true,执行$user['uid'] = 0 这行代码,因为赋值关系,不会报错,很多代码的情况下,一行行的调试就非常浪费时间,如果我们把 0= $uid 变量    这样写做比较 就知道是这行报错了!
错误:【parse error:syntax error unexpected '=' in C:xxx.php on line 20】

<?php 
//查错误的地方
$user = array();
if($uid = 0){
    $user['uid'] = 0;
    $user['groupid'] = 0;
}else{
    $user = $this->getByuid($uid);
}

4、防御式编程思想 

尽管前端做了过滤判断,在我们后台存入数据的数据要做严禁的数据过滤,要不然数据存入乱七八糟的东西,保护程序免遭非法输入数据的危害
  • 错误处理技术
  • 异常处理
  • 隔离程序,使之相互影响小,

5、字符编码统一

PHP编码 和模板编码 和数据库编码保持一致,才不容易出现编码乱码之类的现象

6、尽量使用系统内置函数(优化)

比如获取数组的键名 array_key ,不要太着急自己去实现函数效果,先想想或者查查系统是否疯狂有该函数。建议多看手册的 “字符串”、“数组”的内置函数了解。

7、屏蔽错误非常低效

一些waring 警告的错误提示,是可以用@ 去屏蔽就不显示出来,非常不好的习惯

8、时刻备份源代码

本地需要一份,ftp需要有,云盘也需要有,以防万一。总之总要的文件不能只有一份。
代码不能只有一份,启用编辑器的自动备份,用代码管理工具备份。

9、记住有效期的原则

不要随便相信网上的那些PHP优化50则之类的东西,记住一切都是有效期的,要善于自己去验证,需要自己验证才能相信它,要报有怀疑的角度去想,因为技术东西更新的很快,比如有些文字发布的技术可能是几年前的东西,可能函数被抛弃了。

10、PHP语法糖

用strtr代替str_replace

<?php 
$str = 'hi,php';

//数组形式
$res = strtr($str,array('hi'=>'hello','php'=>'jap'));
$res2 = str_replace('php','jsp',$str);
var_dump($res);

$res2 = str_replace(['p,','h','php'],['j','s','p'],$str);//多次循环去替换

用strtr好处是:只执行一遍,而str_replace是多次循环替换,但是strtr注意的是最好用数组的形式去写,要不然如果 from 与 to 长度不相等,那么多余的字符部分将被忽略。

错误例子: strtr($str,'hi,'hello'); //得出是 he,php
数组定义用 [ ] 中括号的写法
虽然说array()这样比较兼容老版,从PHP5.4支出 [ ] 写法,这样保存语法简洁。

11、PHP用yield实现协程

能够节省很多内存,    

12、用“...”定义变长参数数组

function add(...$num){
  return array_sum($num);
}
add(1,2,3,4,5,6);

13、问号运算符

$userName = $_GET['user_name'] ? $_GET['user_name'] : '黎明强森';
$userName = $_GET['user_name'] ?: '黎明强森';
$userName = $_GET['user_name'] ?? '黎明强森';//php7语法

双问号的 ??写法是只支持PHP7以上的。简洁。

14、一句话木马

PHP内置的eval函数,把字符串穿作为PHP代码执行,动态执行任何的PHP代码。这功能非常强。

<?php 
//比如执行输出
eval('echo 123;');    //123
eval('echo `dir`'); //就可以把你的目录输出出来,注意``是运算符,相当于调用系统的命令。

15、PHP代码的优化

尽可能少用循环,能直接输出数据最好的。比如嵌套ifelse,ifelse四五层流程控制这样可读性比较差、维护性又高。(注意:少用不是不用)!

16、If else的技巧写法

定义一个if初始值

if(1 == $orderStatus){
  $orderTile = '已发货';
}else{
  $orderTile = '未发货';
}
return $orderTile ;

//改成如下格式--------

$orderTile  = '未发货';
if(1 == $orderStatus){
 $orderTile = '已发货';
}
return $orderTile ;

用&&写法(不过这种简写法也是看公司的规范)
&&直接结束语句。
if的使用技巧之“三元运算符替换

也是可以简化三元运算符。

0

评论 (0)

取消