1.PHP生成器(使用yield关键字)
<?php //使用yield关键字实现平方的生成器,在循环结构中则生成的是数组 function do2pos($n){ for($i=1; $i<=$n; $i++){ yield $i * $i; } } //在循环结构中使用yield返回的是Generator对象 var_dump(do2pos(100)); $sum = 0; foreach(do2pos(100) as $v){ $sum += $v; } echo $sum; ?>
2. 增加了finally关键字用于处理异常
<?php try{ }catch(Exception $e){ }finally{ } ?>
3.循环结构中使用list()读取多个元素
<?php ini_set("display_errors", 1); error_reporting(E_ALL); $arr = array(array(1,3,5), array(2,4,6), array(4,6,8), array(88,99,44,55), array(23,78)); foreach($arr as list($one, $two, $three)){ echo PHP_EOL.$one.",".$two.",".$three; } ?>
注意:
若数组内的数组元素个数少于list()声明的个数则报notice
4. empty()全局函数也支持参数为函数
<?php function foo(){ return false; } echo empty(foo()); ?>
5.非变量array和string均支持使用下标获取元素
<?php echo array(2,4,6)[2]; echo [2,4,6][2]; echo "abcde"[2]; ?>
6.类名可以通过Clazz::class获取
<?php namespace project\php; class Clazz{} echo Clazz::class; ?>
7.增加了opcache的php加速
opcache在php.ini中的配置如下:
[opcache] zend_extension=php_opcache.dll opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=64 opcache.interned_strings_buffer=4 opcache.max_accelerated_files=2000 opcache.max_wasted_percentage=5 opcache.use_cwd=1 opcache.validate_timestamps=1 opcache.revalidate_freq=2 opcache.revalidate_path=0 opcache.save_comments=1 opcache.load_comments=1 opcache.fast_shutdown=0 opcache.enable_file_override=0 opcache.optimization_level=0xffffffff opcache.inherited_hack=1 opcache.dups_fix=0 opcache.blacklist_filename= opcache.max_file_size=0 opcache.consistency_checks=0 opcache.force_restart_timeout=180 ;opcache.error_log= opcache.log_verbosity_level=1 opcache.preferred_memory_model= opcache.protect_memory=0 opcache.validate_permission=0 opcache.validate_root=0