前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php的一些编写代码的好习惯

php的一些编写代码的好习惯

作者头像
仙士可
发布2019-12-19 14:26:50
4290
发布2019-12-19 14:26:50
举报

php作为世界上最好的语言,入门简单,编写代码容易,很容易让新手实现自己想要的功能,却因为入门简单,导致新手没有养成一个写代码的好习惯,导致后期编写的代码性能,代码可读性越来越差,下面就分享一下我这2年个人认为好的代码习惯吧

一:尽量使用php内置函数

php在默认安装情况下,有1000多个可以使用的函数,包括的各式各样的操作功能,比如判断字符串是否存在某个字符串strpos(),

数组排序sort()等等函数,由于这些都是php的扩展(C语言),在底层中完成的,所以在运行中不需要被zend引擎重新解释,速度更快,

所以,多使用内置函数,能让php的运行速度更快一些

二:尽量不使用php错误抑制符

php中,@符号是用于在单个语句中预制报错的,例如@$aa=1;它的执行过程是:

1:把error_reporting参数改为0(屏蔽所有错误)

2:执行$aa=1;

3:把error_reporting参数改为默认

相当于,只要使用了一次@错误符号,会调用2次修改错误参数,这大大的降低了性能,而且会造成代码的不可读,变的更难调试

测试情况如下:

<?php
var_dump(error_reporting());
var_dump(@error_reporting());
var_dump(error_reporting());

结果:

三:关于双引号和单引号

大家在初学PHP的时候,大家都会说,

单引号的性能比双引号好,所以建议大家使用单引号,

这句话是没有错的,但是,我们应该根据实际情况,来选择适合的,例如:

<?php
$num_1 = 1;
$num_2 = 2;
$num_3 = 3;
$num_4 = 4;
$str_1 = '我是一个简单的字符串';
$str_2 = "我是一个简单的字符串";

$str_3 = 'num_1数字为:' . $num_1 . ',num_2数字为:' . $num_2 . ',num_3数字为:' . $num_3 . ',num_4数字为:' . $num_4;
$str_4 = "num_1数字为:{$num_1},num_2数字为:{$num_2},num_3数字为:{$num_3},num_4数字为:{$num_4}";

当字符串包含遍历过多时,可以考虑使用双引号,适当的消耗少量的性能,用于换取代码的可读性

下面是关于单引号,双引号的性能测试:

php5.4-cli:

php5.6-cli:

php7.2-cli:

可看出,单引号和双引号在纯字符串的性能差距是非常少的(测试有误差),而在多变量情况下时,双引号的性能比单引号好了很多,

所以,在变量多的情况下,大胆的使用双引号吧

到这里,还是先说一句:"实践是检验真理的唯一标准";

四:避免在循环里做运算

这个是属于写代码必须掌握的一个东西哦,有些东西,在循环中可以重复使用的,需要在循环外定义,否则会造成非常多的性能浪费

例如:

五:全等于和等于

由于php是弱类型语言,php的等于会进行类型转换再进行值比较,这样就会造成额外的性能消耗,所以

在已知需要某类型的情况下,尽量使用全等于

性能测试:

六:尽量避免php报错

在很多时候,可能大家为了方便,把warning和notice的这些不会影响php执行的错误直接屏蔽,不去管它,

但是,只要发生了报错,在php底层,都是会走php异常流程的(各种底层的错误处理),性能会大大降低,

所以,多使用isset,is_object,is_array等一系列变量判断函数,尽量避免出现错误

性能测试:

七:及时unset

当大数组处理完毕时,及时的unset回收内存

八:底层做好访问限制

该经验属于业务层面,当某个页面访问会造成大量资源消耗时,尽量的限制访问频率,以免被熊孩子多线程爬取页面把页面爬崩,

例如:限制同一秒时间只能访问该页面5次,超过则限制访问,直到下一秒才可继续访问

九:使用php内置常量代替内置函数

php在启动时,有赋值很多的系统常量,例如PHP_OS,PHP_VERSION等等,可以使用get_defined_constants(true)函数获取所有常量

使用PHP_VERSION代替phpversion()函数

使用PHP_OS代替php_uname('s')函数

以及最常见的使用$_SERVER'REQUEST_TIME'代替time();

测试如下:

备注:发现5.4的常量比函数慢,果断换成了5.6,可自行尝试

十:将能使用到的模型,变量等,定义在最上方,便于阅读

例如:

<?php

$user_model = M('User');
$log_model = M('Log');

$user_info = $user_model->getInfo();
$agent_info = $user_model->getAgentInfo($user_info['pid']);
$log_model->insertLog();
//巴拉巴拉巴拉

这个只是个人认为的好习惯,便于阅读,这样写的话,看前2行,就知道这个地方会用到哪几个模型,可以大致猜到该段代码的大致逻辑了

十一:尽量使用软删除

设计表的时候,建议所有表都增加几个字段(status字段.add_time(新增时间),update_time(更新状态时间)),用于标识该条数据状态(正常1,已删除2等等)

当需要删除该条记录时,只将status置为已删除状态,而不是真正的去删除它

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:尽量使用php内置函数
  • 二:尽量不使用php错误抑制符
  • 三:关于双引号和单引号
  • 四:避免在循环里做运算
  • 五:全等于和等于
  • 六:尽量避免php报错
  • 七:及时unset
  • 八:底层做好访问限制
  • 九:使用php内置常量代替内置函数
  • 十:将能使用到的模型,变量等,定义在最上方,便于阅读
  • 十一:尽量使用软删除
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档