PHP开发小技巧

前言

最近接触了typecho 所以PHP肯定就离不开手了 这里记录一些平常开发的一些小技巧

莫名的用户bug

不要只处理error,而忽略warning和notice,这可能会导致日后的莫名其妙的问题,项目在开发状态下应该是error_reporting( E_ALL  ^  E_NOTICE ),等到发布的外网生产环境时,应关闭所有错误报告display_errors=Off,error_reporting(0) 这样好处有很多 避免输出一堆notice 同时规范了你的语法习惯

echo printf

echo效率比printf高 而且支持多重参数,用逗号进行隔开 例如echo d1,d2;

变量函数

例如一堆函数 进行图片转换 提供的接口是类似 img_jpgtopng格式的函数我们只需要temp_func="img_".ex_to;temp_img=

偷懒和速度操作文件

在可以用file_get(put)_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get(put)_contents,因为它的效率高得多。

引入文件觉得路径

不管是 include还是什么函数引入文件使用绝对路径比使用相对路径引用速度高 因为这样可以减少PHP目录搜寻时间 当然这点速度也许无用 但是在层层引用中导致工作目录变化 相对路径会炸的

引用细节

   function load_class($class_name) { //path to the class file $path = ROOT . '/lib/' . $class_name . '.php'); require_once( $path ); }

如果你一个个引用我觉得有点原始人的操作了 使用函数辅助引用 可以增加代码可读性 害

保留调试代码

在开发环境中, 我们打印的各种调试信息, 而一旦问题解决, 我们注释或删除它们. 然而更好的做法是保留调试代码,设计一个常量保存是否为debug模式 是的话就启用调试代码 这样的好处当然有的 方便后续调试 包括用户上报bug 之类

爱上多元操作

多元操作避免大量成块状的if else代码 这样能够提高代码可读性 例如 isset($img_file)?webp():fopen(); 这样能将三行代码简单压缩到一行 利用好运算符有时候能使代码更加精简

利用逻辑运算符和if实际例子

  <?php 
function authorized($username, $page) {
if (!isBlacklisted($username)) {
if (isAdmin($username) ||       isAllowed($username, $page)) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
}
?> 

这段代码显然鸡肋了 我们只需要

    <?php
  function authorized($username, $page) {
  return (!isBlacklisted($username) &&    (isAdmin($username) || isAllowed($username,       $page));
  }
 ?>

是不是一个非常简单,将一个臃肿的函数压缩到只剩return

 完全理解魔术方法

如果你并不能理解魔术方法 使用这种花哨的操作在线上,刀剑上的舞蹈,改天就被rm删库

一些小细节

row[’id’] 的速度是row[id]的7倍。

如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time(),这是PHP官方提供的一个全局变量。

总结

逻辑要灵活,高效优质的代码才能写出来

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何隐藏cnzz的统计图片

    很多人都知道cnzz不管怎么设置都会出现统计图片或者字,对于某些网站来说这非常破坏美观性,如果使用cnzz统计又该如何隐藏这些图标呐?

    乔千
  • 腾讯官方可编程机器人 (该怎么折腾呢)

    腾讯推出了内测的 webhook 机器人,这件事其实预见性就知道了,只是最近没想到出来了,钉钉和一些就支持 webhook 实现机器人,腾讯跟进可还行。

    乔千
  • 改造typecho上传地址URL

    typecho附件上传我是一直看着难受 usr/uploads/2020/04/xxxxx.jpg 太长了于是我直接修改了上传部分 将其规范为 usr/upl...

    乔千
  • Web/PhpStorm设置代码缩进后代码格式化不起效的解决方法

    PhpStorm 或者 WebStorm 等 JetBrains 系列软件默认的是 4个空格。

    德顺
  • 记一次被DDoS敲诈的历程

    背景是这样,一个朋友网站业务被DDoS了,先是威胁要800元RMB,然后又转成提供DDOS的服务,然后又变成了DoS培训, 又变成了卖DDoS软件,最后又变成了...

    FB客服
  • 2018年前三季度首次代币发行融资分析报告 | 链塔智库

    链塔BlockData团队对2018年前三季度首次代币发行融资情况进行分析,发现整个融资市场呈以下的几种发展特点:

    区块链大本营
  • Hadoop离线数据分析平台实战——500事件数据展示Hadoop离线数据分析平台实战——500事件数据展示

    Hadoop离线数据分析平台实战——500事件数据展示 项目进度 模块名称 完成情况 1. 程序后台框架搭建 完成 2. 用户基本信息展示 完...

    Albert陈凯
  • 【CV】大盘点 | 性能最强的目标检测算法

    去年7月,Amusi 曾做过一篇整理:大盘点 | 性能最强的目标检测算法,那时收集的情况是:改进后的 Cascade R-CNN 算法是截止(2019.07.0...

    黄博的机器学习圈子
  • 基因融合检测数据库介绍

    基因融合指的是两个或者多个基因的部分序列结合到一起形成了一种新的基因。随着高通量测序的发展,我们可以利用二代测序的数据来鉴定出发生在不同疾病当中的融合基因,所以...

    匹咔球
  • Elasticsearch alias别名管理小结

    "alias": "test1_index_alias"

    授客

扫码关注云+社区

领取腾讯云代金券