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
函数返回值类型声明,标量类型声明
PHP编码技巧的更多相关文章
- CSS编码技巧
前面的话 本文将从DRY.currentColor.inherit和合理使用简写这几方面来详细介绍CSS编码技巧 DRY DRY,即don`t repeat yourself,尽量减少代码重复 在软件 ...
- [css 揭秘]:CSS编码技巧
CSS编码技巧 我的github地址:https://github.com/FannieGirl/ifannie 喜欢的给我一个星吧 尽量减少代码重复 尽量减少改动时需要编辑的地方 当某些值相互依赖时 ...
- 代码优化:Java编码技巧之高效代码50例
出处: Java编码技巧之高效代码50例 1.常量&变量 1.1.直接赋值常量值,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常量值. 反例: Long i = ...
- 01--css编码技巧--css揭秘
一 尽量减少代码重复 1.按钮 #btn { padding: .3em .8em; border: 1px solid #446d88; background: #58a linear-gradie ...
- AS技巧合集「编码技巧篇」
转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254725&extra=page%3D2%26filter%3Dautho ...
- 减少GC开销的5个编码技巧
在这篇文章中,我们来了解一下让代码变得高效的五种技巧,这些技巧可以使我们的垃圾收集器(GC)在分配内存以及释放内存上面,占用更少的CPU时间,减少GC的开销.当内存被回收的时候,GC处理很长时间经常会 ...
- PHP 提高PHP性能的编码技巧以及性能优化
0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的“函数”(译注:PHP ...
- 关于Unity中的新手编码技巧
写代码遇到报错,问题怎么办?怎么查看unity代码的接口?函数参数不记得了怎么办? 解决方法: 1.选择不懂的函数或类,按F12,跳转到代码的定义,自己去看就可知道了. 2.有的时候,选择一个函数,按 ...
- sublime text 快速编码技巧 GIT图
网上到处都云云sublime有多好.用了一年多的时间,受益匪浅,减少了很多重复性的劳动. 特别是: 1.灵活强大的多行编辑功能: 2.快速查找文件 ctrl + p; 3.正则查找 + 多行编辑; 4 ...
随机推荐
- JAVA爬取亚马逊的商品信息
在程序里面输入你想爬取的商品名字,就可以返回这件商品在亚马逊搜索中都所有相关商品的信息,包括名字和价格. 解决了在爬取亚马逊时候,亚马逊可以识别出你的爬虫,并返回503,造成只能爬取几个页面的问题. ...
- vue简单路由(二)
在实际项目中我们会碰到多层嵌套的组件组合而成,但是我们如何实现嵌套路由呢?因此我们需要在 VueRouter 的参数中使用 children 配置,这样就可以很好的实现路由嵌套. index.html ...
- Vulkan Tutorial 03 理解Instance
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Creating an instance 与Vulkan打交道,通常的步骤是创建一个 ...
- bash shell笔记2 结构化命令
二.使用结构化命令 知识内容: # 改变命令流 # 使用if-then逻辑 # 嵌套if-then # 测试条件 # 高级if-then功能 许多程序在脚本命令之间需要某些逻辑控制流,有些命令允许脚本 ...
- TCP三次握手和释放
TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面. 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的A ...
- java代理模式与装饰者模式
静态代理和装饰者模式的区别: 先来看一下装饰者模式的定义:装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 总结一下采用装饰者模式是为了增强或拓展原对象的功能. ...
- Android Studio 编译提示 No installed build tools found. Please install the Android build tools
添加 ANDROID_HOME=D:\Android\adt-bundle-windows\sdk 系统变量即可
- Luogu 3594 [POI2015]WIL-Wilcze doły
简单题. 考虑没有修改数字的条件的限制,我们直接用双指针扫描就可以计算出答案了. 然后考虑加入修改数字的条件,只要用单调队列维护出当前两个指针表示的区间中长度为$d$的一段区间的最大值,用总和减掉这个 ...
- 【原创】ListView快速滚动至新添加一行(自动滚动)
在C#开发中我们经常要开发一些日志系统,尤其是基于ListView的日志显示系统.但是当日志增多是你是否有一些困扰,就是它为什么不会自动滚动至最后一行. 以下是一小段代码,希望可以帮助你. publi ...
- Android不间断上报位置信息-应用进程防杀指南
没用的 除非加入白名单 或者用户自己设置锁屏后不被杀死 不然的话 锁屏5分钟以内app会被杀死,包 括所有的service. 说白了就是定位不要纯依赖gps,很多硬件为了省电,会对熄屏下的模块功能和运 ...