计算机网络/计算机科学与应用/系统/运维/开发

PHP7实用技术

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`;');


php7

知识是抵御一切灾祸的盾牌

评论

^