PHP编码小技巧

好的php代码有4个基本原则;
1.正确的实现功能;
2.执行的速度要快;
3.占用系统资源少;
4.后期维护方便;

习惯1:
// 规范命名
function fun1(){
   $a = strrpos($var,'.');
   $b = substr($var,$a+1);
   return $b;
}
// 不好的命名

function extName(){
   $doPos   = strrpos($fileName,'.');
   $extName = substr($fileName,$dotPos + 1);
   return $extName;
}
// 好的命名

习惯2:
// 优先使用单引号;
$row['id']的效率是$row[id]的7倍

习惯3:
// 纯PHP代码,最好在文件末尾删除PHP结束标
<?php
// 代码区域
?>

<?php
// 没有结束编辑可以吗?


习惯4:
// 坚持字符编码统一
header('Content-type: text/html;charset=UTF-8');
php文件编码 = 模板编码 = 数据库编码

习惯5:
// 用strtr代替str_replace
/**
 * @param string $subject
 * @param array $array
 * @return string
 * @author shidatuo
 * @description strtr函数的效率是str_replace函数的四倍
 */
function str_replace2(string $subject , array $array)
{
    // array('hi'=>'shidatuos')  hi 替换成 shidatuo
    return strtr($subject,$array);
}

习惯6:
// 与钱打交道的尽量使用bc函数
  /**
     * @param $m
     * @param $n
     * @param $x
     * @return string|string[]|null
     * @author shidatuo
     * @description 数字运算
     */
    function calc($m,$n,$x)
    {
        $errors=array(
            '被除数不能为零',
            '负数没有平方根'
        );
        switch($x){
            case 'add': // 加
                $t = bcadd($m,$n);
                break;
            case 'sub': // 减
                $t = bcsub($m,$n);
                break;
            case 'mul': // 乘
                $t = bcmul($m,$n);
                break;
            case 'div': // 除
                if($n!=0){
                    $t = bcdiv($m,$n);
                }else{
                    return $errors[0];
                }
                break;
            case 'pow': // 乘方
                $t = bcpow($m,$n);
                break;
            case 'mod': // 取模
                if($n != 0){
                    $t = bcmod($m,$n);
                }else{
                    return $errors[0];
                }
                break;
            case 'sqrt': // 二次方根
                if($m>=0){
                    $t = bcsqrt($m);
                }else{
                    return $errors[1];
                }
                break;
        }
        return preg_replace("/\..*0+$/",'',$t);
    }
[bc函数](https://www.php.net/manual/zh/ref.bc.php "bc函数")

习惯7:
// 用 '[]' 定义数组
$items = array();
$items = [];

$items = array(1,2,3,4,5,6);
$items = [1,2,3,4,5,6];

// 语法上的支持更加显得简洁。

习惯8:
// 函数赋值默认参数:+ 运算符
function merge($params){
   $params += [
      'name' => '张三',
      'age'  => 18
   ]
   print_r($params);
}

习惯9:
// ?? 运算符
$userName = isset($_GET['username']) ? $_GET['username'] : 'www';
// 换成这种写法
$userName = $_GET['username'] ?? 'www';

习惯10:
// if的使用技巧之“用"&&" 替换 if
if(strlen($newpwd) < 6) {
   $message = '密码长度不足';
}
strlen($newpwd) < 6 && $message = '密码长度不足';

习惯11:
// if的使用技巧之“用"&&" 替换 if
if(strlen($newpwd) < 6) {
   $message = '密码长度不足';
}
strlen($newpwd) < 6 && $message = '密码长度不足';

习惯12:
// 尽量不要在for循环中使用函数
for ($x=0; $x < count($array);$x) {
   // 每循环一次都会调用count()函数。
}

习惯13:
// 用数组的形式去替代 'else if'
$payTable = [
   1 => '微信支付',
   2 => '支付宝支付'
];
$payWord = $payTable[$pay_id];

史大坨博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论