最近Zend的PHP7已经 处于最后的BUG修复阶段,目前 已经更新RC7,对于Zend官方的说法PHP7的性能大约相比PHP5系列版本 提高2倍以上,增加了一些新的语法,摒弃了PHP5的一些影响性能的因素,主要增加了以下Features 。
<?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } define('ARRAY_SIZE',20000); function QuickSort($arr,$low,$high) { if($low>$high) return ; $begin=$low; $end=$high ; $key=$arr[$begin]; while($begin<$end) { while($begin<$end&&$arr[$end]>=$key) --$end ; $arr[$begin]=$arr[$end]; while($begin<$end&&$arr[$begin]<=$key) ++$begin; $arr[$end]=$arr[$begin]; } $arr[$begin]=$key; QuickSort($arr,$low,$begin-1); QuickSort($arr,$begin+1,$high); } $time_start = microtime_float(); $arr=array(); for($i=0;$i<ARRAY_SIZE;$i++) { array_push($arr,rand(1,20000)); } QuickSort($arr,0,ARRAY_SIZE-1); $time_end = microtime_float(); echo "Bengin:$time_start".'s '; echo "End:$time_end".'s '; echo "TakeTime: ".($time_end-$time_start).'s '; ?>
PHP7新增四个标量类型 int
, float
, string
bool, 首先要使用强类型 必须在文件中加入指令
declare(strict_types=1)该指令必须是第一个指令而且只有一种用法
<?php declare(strict_types=1); function GetInt():int{ return 1.0; } echo GetInt(); ?>
<?php declare(strict_types=1); function GetInt():int{ return 1; } echo GetInt(); ?>
<?php declare(strict_types=1); function add(int $a,int $b):int{ return $a+$b; } echo add(1,2); ?>
<?php declare(strict_types=1); function add(int $a,int $b):int{ return $a+$b; } var_dump(add(1,2)); ?>var_dump的结果是 int(3)
<?php declare(strict_types=1); function foobar(float $abc): int { return ceil($abc + 1); } try{ foobar(1.22); }catch(Exception $ex){ echo $ex->getMessage(); } ?>
<?php declare(strict_types=1); class Foo {public function M1(){echo 'hello,world!';}} $child = new class extends Foo { public function M2(){echo 'hello,world!';return $this;}}; $child->M2()->M1(); ?>
<?php declare(strict_types=1); var_dump(new class(5) { public function __construct($i) { $this->i = $i; } }); ?>