zoukankan      html  css  js  c++  java
  • php编码的一些小规范

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/104

    最近在整理线上的hhvm warning,虽然每天产生百万级别的warning,但是归结起来只有几类warning。这几类warning虽然都是很小的编码细节导致的,但是也记下来供自己之后编码注意。

    Invalid argument supplied for foreach()

    foreach($a as $val){
        //do something
    }
    

    foreach是再常见不过的用法,但是当$a不是数组时,就会报出warning,这点占总warning的60%以上:

    Warning: Invalid argument supplied for foreach() in /home/work/orp/zyc/a.php on line 7
    

    规范的做法是在foreach前判断$a的类型:

    $a = is_array($a) ? $a : array();
    foreach($a as $val){
        //do something
    }
    

    Invalid operand type was used: array_merge expects array(s)

    (a,)b不是数组时,就会报出上述的错误。
    规范的做法是array_merge前判断(a与)b的类型。

    $a = is_array($a) ? $a : array();
    $b = is_array($b) ? $b : array();
    $c = array_merge($a,$b);
    

    in_array() expects parameter 2 to be an array or collection

    in_array($ele,$array);
    

    当$array不是数组时,就会报上述错误,解决办法同上。

    function expects exactly 2 parameters, 1 given

    假设现在有个公共文件common.php,里面定义了一个类和函数:

    class Common{
        function common($a){
            //do something
        }
    }
    

    现在有个文件调用了common.php里的common函数:

    //a.php
    $obj = new Common();
    $ret = $obj->common(5);
    

    这时,有人修改了common.php,将函数参数多加了一个$b:

    class Common{
        //add param $b by xxx
        function common($a,$b){
            //do something
        }
    }
    

    但是此时作者并不知道有个a.php也调用了这个方法,此时就会报错:

    common() expects exactly 2 parameters, 1 given
    

    推荐的修复方案时,之后加函数参数时可以为添加的参数多加一个默认值即可:

    class Common{
        //add param $b by xxx
        function common($a,$b=0){
            //do something
        }
    }
    
  • 相关阅读:
    机器学习 深度学习 网站
    Concat层解析
    网络可视化工具netron详细安装流程
    【中文】【deplearning.ai】【吴恩达课后作业目录】
    python 3 linux环境搭建django production环境
    eCharts画图
    mysql 外键
    django执行离线ORM、数据操作
    http 发包调试工具
    python有空仔细研究
  • 原文地址:https://www.cnblogs.com/zhangyachen/p/8033291.html
Copyright © 2011-2022 走看看