tar -zxvf php-5.6.36.tar.gztar -zxvf php-7.1.0.tar.gztar -zxvf php-7.4.0.tar.gz
源码编译安装5.6.35
./configure --prefix=/home/codes/php/php-5.6.36/ --enable-fpm --enable-debugmake && make install
源码编译安装7.1.0
./configure --prefix=/home/codes/php/php-7.1.0/ --enable-fpm --enable-debugmake && make install
源码编译安装7.4.0

./configure --prefix=/home/codes/php/php-7.4.0/ --enable-fpm --enable-debugmake && make install
在目录php-5.6.36/Zend和php-7.1.0.3/Zend和php-7.4.1/Zend下面有性能测试的PHP文件bench.php和micro_bench.php查看PHP版本
/home/codes/php/php-5.6.36/bin/php -v/home/codes/php/php-7.1.0/bin/php -v/home/codes/php/php-7.4.0/bin/php -v
实行测试
/home/codes/php/php-5.6.36/bin/php bench.php /home/codes/php/php-7.1.0/bin/php bench.php /home/codes/php/php-7.4.0/bin/php bench.php
5.6.36实行bench测试文件
7.1.0实行bench测试文件
7.4.0实行bench测试文件
/home/codes/php/php-5.6.36/bin/php micro_bench.php /home/codes/php/php-7.1.0/bin/php micro_bench.php /home/codes/php/php-7.4.0/bin/php micro_bench.php
5.6.36实行micro_bench测试文件
7.1.0实行micro_bench测试文件
7.4.0实行micro_bench测试文件
PHP7的新特性太空船操作符 <=>太空船操作符用于比较两个表达式例如,当$a小于、即是、或大于$b时它分别返回-1、0或1
codes/php/php-7.1.0/bin/php -r "echo 1<=>1; echo PHP_EOL;"codes/php/php-7.1.0/bin/php -r "echo 2<=>1; echo PHP_EOL;"codes/php/php-7.1.0/bin/php -r "echo 2<=>3; echo PHP_EOL;"
太空船操作符
类型声明
代码中通过指定 strict_types的值(1或者0),1表示严格类型校验模式,浸染于函数调用和返回语句;0表示弱类型校验模式。declare(strict_types=1);<?phpdeclare(strict_types=1);function sum(int ...$ints){ return array_sum($ints);}echo sum(2, '3', '4.1');echo PHP_EOL;?>
<?phpdeclare(strict_types=1);function sum(int ...$ints){ return array_sum($ints);}echo sum(2, 3, 4);echo PHP_EOL;?>
类型申明
null合并操作符
<?php// 获取 $_GET['site'] 的值,如果不存在返回 'default'$site = $_GET['site'] ?? 'default';print($site);print(PHP_EOL); // PHP_EOL 为换行符// 以上代码等价于$site = isset($_GET['site']) ? $_GET['site'] : 'default';print($site);print(PHP_EOL);// ?? 链$site = $_GET['site'] ?? $_POST['site'] ?? 'default';print($site);print(PHP_EOL);?>
null合并操作符
常量数组
<?php// 利用 define 函数来定义数组define('sites', [ 'a', 'b', 'c']);print(sites[1]);echo PHP_EOL;?>
常量数组
PHP匿名类
<?phpinterface Logger{public function log(string $msg);}class Application{ private $logger; public function getLogger(): Logger{return $this->logger;} public function setLogger(Logger $logger){$this->logger = $logger;}}$app = new Application;// new class 来实例化一个匿名类,用来替代一些"用后即焚"的完全类定义。$app->setLogger(new class implements Logger{public function log(string $msg){print_r($msg);}});$app->getLogger()->log('我是第一条日志');echo PHP_EOL;$app->setLogger(new class implements Logger{public function log(string $msg){print_r($msg);}});$app->getLogger()->log('我是第二条日志');echo PHP_EOL;
PHP匿名类
PHP intdiv()函数
<?phpecho intdiv(9,3),PHP_EOL;echo intdiv(10,3),PHP_EOL;echo intdiv(5,10),PHP_EOL;
PHP intdiv()函数
list用法
前面是老版本,后面是php7.1.0用法
<?php$arr = [1, 2, 3];list($a, $b, $c) = $arr;var_dump($a, $b, $c);$arr = [4, 5, 6];[$a, $b, $c] = $arr;var_dump($a, $b, $c);
list用法