zoukankan      html  css  js  c++  java
  • PHP编码技巧

    原则

    正确实现功能
    执行速度与快
    占系统资源少
    后期维护方便

    编程注意

    1.命名很重要
    2.适当的使用注释
    3.使用一个变量,需要初始化
    4.优先使用单引号 $row[‘id’]的效率是$row[id]的7倍
    5.用“1$a” 替换 “$a1”
    6.防御式编程思想
    7.保护程序免遭非法输入数据的危害
    8.错误处理技术
    9.异常处理
    10.隔离程序,使之相互影响小
    11因地制宜的防御,过度防御会增加复杂度

    • 明确包含文件的路径
    • 给予恰当的默认值
    • 自定义错误报警的级别
    • 不依赖系统环境参数,程序要动态了解所处的环境
      12.纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。
      13.header头的编码 header("Content-type: text/html;charset=utf-8");
      14.坚持字符编码统一
      $phpcoding=PHP文件编码;$tplcoding=模版编码;
      $mysqlcoding=数据库编码;
      $phpcoding == $tplcoding ==$mysqlcoding
      15.error_reporting(7)
      16
      usort — 使用用户自定义的比较函数对数组中的值进行排序
      rawurlencode — 按照 RFC 1738 对 URL 进行编码
      parse_url — 解析 URL,返回其组成部分
      http_build_query — 生成 URL-encode 之后的请求字符串
      exif_imagetype — 判断一个图像的类型
      levenshtein — 计算两个字符串之间的编辑距离
      uniqid — 生成一个唯一ID
      get_browser — 获取浏览器具有的功能
      get_defined_vars — 返回由所有已定义变量所组成的数组
      str_word_count — 返回字符串中单词的使用情况
      17.用i+=1代替i=i+1
      18.用isset代替strlen
      strlen($sub)<=12
      !(isset($sub[12]))
      19.用strtr代替str_replace
      20.函数赋值默认参数:+ 运算符
      21.用 ... 定义变长参数函数
      22.用 ** 进行幂运算
      23.用 “[]” 定义数组
      24.?? 运算符

    IF

    //if的使用技巧给定初始值

    $orderTitle = "停售";
    if(1==$orderState){
        $orderTitle = "预订"
    }
    return $orderTitle;
    

    //if的使用技巧:用 && 替换 if

    if(strlen($newpwd)<6){
        $message = '密码长度不够';
    }
    strlen($newpwd)<6 && $message = '密码长度不够';
    

    //if的使用技巧之“三元运算符替换"

    //简化三元符

    $action =  (empty($_POST['action'])) ? 'default' : $_POST['action'];
    
    $action = $_POST['action'] ?: 'default';
    

    //去掉多此一举的if

    //else if => switch case

    //表驱动代替if

    $sortTable = array(
        'test1'=>1,
        'test2'=>2,
        'test3'=>3,
    );
    $sortid = $sortTable[$sortName];
    

    用while(true) 表示无限循环,别用for
    特定情况下[发邮件、采集网页],要加延时sleep
    循环体内尽可能不用函数或更耗资源的调用
    foreach代替while和for循环(PHP)
    避免空循环
    只做一件事,尽可能短,控制在50行以内
    循环嵌套限制在3层以内

    函数

    函数的最佳最大长度是50-150行代码
    函数参数不超过7个
    短小函数更容易理解也方便修改
    只做一件事情的函数更易于复用
    短小的函数测试更方便

    复杂的逻辑表达式做成布尔函数

    PHP新增特征

    新增了动态访问静态方法的方式
    内置用于开发的 CLI 模式的 web server
    实例化时访问类成员 (new Foo)->bar();
    对函数返回数组的成员访问解析 print func()[0];
    新增二进制直接量 $bin = 0b110011;
    boolval() 函数
    新增 array_column() 函数
    直接通过下标获取访问数组和字符串字面量的元素或字符
    empty() 支持传入一个任意表达式,而不仅是一个变量
    foreach 支持 list()
    新增 finally 关键字
    新增 Traits
    函数返回值类型声明,标量类型声明

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/8136350.html
Copyright © 2011-2022 走看看