原则

正确实现功能

执行速度与快

占系统资源少

后期维护方便

编程注意

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

函数返回值类型声明,标量类型声明

PHP编码技巧的更多相关文章

  1. CSS编码技巧

    前面的话 本文将从DRY.currentColor.inherit和合理使用简写这几方面来详细介绍CSS编码技巧 DRY DRY,即don`t repeat yourself,尽量减少代码重复 在软件 ...

  2. [css 揭秘]:CSS编码技巧

    CSS编码技巧 我的github地址:https://github.com/FannieGirl/ifannie 喜欢的给我一个星吧 尽量减少代码重复 尽量减少改动时需要编辑的地方 当某些值相互依赖时 ...

  3. 代码优化:Java编码技巧之高效代码50例

    出处:  Java编码技巧之高效代码50例 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值. 反例: Long i = ...

  4. 01--css编码技巧--css揭秘

    一 尽量减少代码重复 1.按钮 #btn { padding: .3em .8em; border: 1px solid #446d88; background: #58a linear-gradie ...

  5. AS技巧合集「编码技巧篇」

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254725&extra=page%3D2%26filter%3Dautho ...

  6. 减少GC开销的5个编码技巧

    在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会 ...

  7. PHP 提高PHP性能的编码技巧以及性能优化

    0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的“函数”(译注:PHP ...

  8. 关于Unity中的新手编码技巧

    写代码遇到报错,问题怎么办?怎么查看unity代码的接口?函数参数不记得了怎么办? 解决方法: 1.选择不懂的函数或类,按F12,跳转到代码的定义,自己去看就可知道了. 2.有的时候,选择一个函数,按 ...

  9. sublime text 快速编码技巧 GIT图

    网上到处都云云sublime有多好.用了一年多的时间,受益匪浅,减少了很多重复性的劳动. 特别是: 1.灵活强大的多行编辑功能: 2.快速查找文件 ctrl + p; 3.正则查找 + 多行编辑; 4 ...

随机推荐

  1. 1.1.Task Queue

      任务队列是一种跨线程.跨机器工作的一种机制.   任务队列中包含称作任务的工作单元.有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理.   celery通过消息进行通信,通常使用一 ...

  2. DDD学习笔录——提炼问题域之有效提炼知识的模型(三)

    方式六:延迟对模型中概念的命名 对领域建模时命名很重要. 因为在不断的知识提炼过程中经常会发现已经被命名的概念与你最初理解的有出入,这时你当初的命名就会变成一个问题.其问题在于  最初选作名称的这个词 ...

  3. mysql之约束以及修改数据表

    数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...

  4. 解决mybatis中转义字符的问题

    xml格式中不允许出现类似“>”这样的字符,有如下两种解决方法 方法一:使用转义字符 SELECT * FROM test WHERE 1 = 1 AND start_date <= CU ...

  5. SpringMVC总结二:Controller的请求映射方式(RequestMapping)简单介绍

    在SpringMVC总结一:快速入门的基础上简单介绍一下请求映射的方式: 1,标准映射规则 1. @RequestMapping可以设置在类上,也可以设置在方法上 2. 请求的映射规则是:类上的Req ...

  6. Linux 程序和进程的关系

    查看进程命令 ps  ps -elf|grep init|grep -v grep 查看init进程ID号:ps aux |grep init |grep -v grep; ps aux 会把系统所有 ...

  7. Codeforces 1142D Foreigner (DP)

    题意:首先定义了一种类数(标志数) 1:1到9都是标志数. 2:若x / 10是标志数,假设x /10在标志数中的排名是k, 若x的个位数小于k % 11, 那么x也是标志数. 现在给你一个字符串,问 ...

  8. c语言学习笔记 for循环的结构

    其实感觉for循环没有while循环那么直白好理解. for(i=0;i<n;i++) { dosth(); } i=0是i的初始值. i<n是循环进行的条件. i++是每次循环要做的事情 ...

  9. Linux ekho

    一.简介 Ekho(余音)是一个免费.开源的中文语音合成软件.它目前支持粤语.普通话(国语).诏安客语.藏语.雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现.Ekho支持L ...

  10. NUMA微架构

    NUMA微架构 written by qingran September 8th, 2011 no comment 现在开始补日志,逐步的扫清以前写了一半的和"欠账未还的".半年之 ...