PHP语法糖
新版本的php发布,会有一些新的语法到加入,这种语法对语言的功能并没有影响,但是更方便编程使用。 语法糖,一些语法技巧,简化了程序员工作.
1.逗号优于点号
$foot = 'hello';
$bar = 'world';
echo $foot . $bar;
echo $foot , $bar;echo 输出是语言结构,使用 逗号,即把两个变量依次输出,没有占用额外的内存,,但是是用. 则会进行连接操作,链接操作会使用中间变量,占用更多的内存.
2.$i=$i+1比较低效
$i = 0;
$i++;
$i += 1;
$i = $i + 1;3.用isset代替strlen
strlen()函数函数执行起来相当快,只返回在zval 结构中存储的已知字符串长度。但是由于strlen()是函数,多多少少会有些慢。
示例:
$subject = 'hello world';
if (strlen($subject) < 20) {
echo 'strlen too short!' . PHP_EOL;
}
if (!isset($subject[20])) {
echo 'isset too short!' . PHP_EOL;
}常见的PHP语言结构
echo()
print()
die()
isset()
unset()
include(), include_require()
require(), require_once()
array()
list()
empty()
eval()
使用语言结构,比使用函数效率高.
所以可以使用上面的方式知道是否是函数 还是php语言的结构
4.用strtr代替str_replace
示例:把Hello 替换成Hi ,world 替换成earth
str_replace 有几个替换则循环几遍,strtr 只会一遍搞定,验证一下:
解析:
strtr 只会循环一遍,所以一次替换下来的结果是
world Hellostr_replace 则会循环两遍,因为有两次替换, 第一次替换的结果为
world world, 第二次的替换的结果则变成了Hello Hello
由于底层实现原理的不一样,strtr函数的效率是str_replace函数的四倍。
5.PHP用yield实现协程
好多内部函数,特别是迭代有关的函数应该都有可能进行优化。
6.用 “[]” 定义数组
5.4起新特征,语法上的支持更加显得简洁。
7.用 ** 进行幂运算
语法上的支持更加高效。
8.用 ... 定义变长参数函数
8.函数赋值默认参数:+ 运算符
9.函数赋值默认参数:+ 运算符
运算符,会字符串键值前的值,所以也就是用户传入的值.
10.?? 运算符
7.0 开始支持
11.<=> 比较运算符("太空船"运算符)
语法是这样的:$c = $a <=> $b;
如果$a > $b, $c 的值为1
如果$a == $b, $c 的值为0
如果$a < $b, $c 的值为-1
12.一句话木马
eval 很危险,可以执行语句
比如以下代码,会执行打印出你的系统的目录信息
中间的是dir是命令.
注意:eval 并非函数,而是php的语言函数,所以一下php.ini中如下设置不起作用
Last updated
Was this helpful?