PHP7实用技术
熟悉PHP
熟悉Linux 和 Shell
熟悉JavaScript 数据结构和算法设计
熟悉MySQL和NoSQL
MVC模式和常见框架Yaf等
熟悉网络编程中常见问题
良好的编码技巧和思路
1、PHP良好的编码方式
php的命名
推荐的命名
function extName($fileName){ $dotPos = strrpos($fileName, '.'); $extName = substr($fileName, $dotPos + 1); return $extName; }
命名注意事项:
命名要有实际含义
命名风格保持一致
不要拼音命名
不要使用关键字命名
2、适当使用注释
好的代码自我描述
难以理解地方加上注释
函数的功能上注释说明
类的功能和使用方法加注释
3、备份代码
用代码管理工具备份
4、字符编码统一
php文件编码 == 模板编码 == 数据库编码
5、变量使用之前,变量要初始化(不然影响性能和可读性)
6、使用NULL === 来代替is_null
is_null 和 NULL === 完全是一样的效果 但是却节省了一次函数调用
尽量使用=== 不用==
php有2组相等比较运算符 ===/!== 和 == / != , == / !=会有隐式类型转换,
而===/!==会严格比较2个操作时是否类型相同并且值相等。
7、避免在for循环中计算
for($i = 0,$i<strlen($str); $i++){
}
会导致每次循环都调用 strlen, 改为
$j = strlen($str); for($i = 0,$i<$j; $i++){ }
8、strtr替代str_replace
$subject = 'hello,world'; echo strtr($subject,array('hello'=>'world','world'=>'hello')); echo str_replace(['hello'=>'world'],['world'=>'hello']);
strtr函数的效率比 str_replace的四倍
9、优先使用单引号
$row['id'] 的效率是$row[id] 的7倍
10、heaer头的编码
header("Content-type:text/html;charset=utf-8");
11、php结束标记不要写
纯php代码,最好删除末尾php结束标记
12、测试环境开启所有错误
error_reporting(7)
1:E_ERROR
2:E_WARNING
4:E_PARSE
上线只有,关闭所有错误,将错误代码写入到错误日志中,方便查询
13、养成不用@好习惯
$handle = @file('a.txt');
14、用FALSE表示错误,用NULL表示不存在
对于操作类的函数,失败返回FALSE,表示操作失败了
对于查询类的函数,如果找不到想要的值,则应该返回NULL,表示找不到
15、优先使用PHP内置函数
正则耗时,尽量避免,而采用直接的字符串处理函数代替,如
filter_var('zhagnsan@163.com',FILTER_VALIDATE_EMAIL);
16、有用的php内置函数
parse_url 解析url
http_build_query 生成URL-encode 之后的请求字符串
exif_imagetype 判断一个图像类型
uniqid 生成一个唯一id
get_browser 获取浏览器的功能
17、php手册中常见的字符串函数和数组函数,需要熟悉,优先使用
18、防御式编程思想
不要相信外部的一切输入都要过滤
$username = htmlspecialchars($_GET['username']);
19、使用PDO操作MySQL
20、php语法糖
常见的php语法糖
echo() print() die() isset() unset()
include() include_once()
require() require_once()
array() list() empty() eval()
不是函数 是语法糖
21、echo 的逗号和点号
$foo = 'hello';
$bar = 'world';
echo $foo . $bar;
echo $foo , $bar; 推荐逗号
22、判断字符串的长度
$str = 'hello';
if(strlen($str) === 5) echo 'do sth ...';
if(!isset($str[5])) echo 'do sth ...'; 推荐
23、strlen()执行块 ,只返回在zval结构中存储的已知字符串长度。
24、使用[]代替array()
$arr = array();
$arr = [];
25、用 ... 定义变长参数函数
function addAll(...$num){
$sum = array_sum($num);
return $sum;
}
addAll(1,2,3,4,5);
26、不用eval()
eval() 能够执行所有的php代码,非常危险
eval('echo `pwd`;');