闲言杂记

最近接触了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_in."to".$ex_to;
$temp_img=$temp_func();
当然函数是否存在也是需要判断 但是这种方法可以避免大量无用的switch或者if

偷懒和速度操作文件

在可以用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官方提供的一个全局变量。

总结

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

评论

  1. BenTok BenTok
    Chrome 80

    Print_r 这个输出数组比echo方便 ̄﹃ ̄

    1. 乔千 乔千
      Chrome 79

      ?好像是

  2. 萧瑟 萧瑟
    Chrome 78

    出现bug,我喜欢人肉debug

    1. 乔千 乔千
      Chrome 79

      要有好习惯 不然后期维护很崩溃的

This is just a placeholder img.