编译安装php7和7的新特性

一、下载php 安装版本

这里我下载了两个版本 php-5.6.39.tar.gz php-7.2.30.tar.gz
主要用于测试两个不同php版本区别

二、php编译安装

  • 如果系统是基于docker的ubuntu生成的容器,因为是简约版,需要安装gcc相关组件,所以需要执行指令:apt-get install build-essential
  • 问题:源码安装php时出现configure: error: xml2-config not found. Please check your libxml2 installation

安装libxml2指令如:1)apt-get install libxml2-dev 2)apt-get install libxml2 3)dpkg -s libxml2-dev查看安装情况

  • 编译: ./configure --prefix=/usr/local/php/php-56 --enable-fpm --enable-debug prefix为安装目录
  • 安装:make && make install

三、php不同版本性能测试

  • 测试脚本路径: /opt/php/php-7.2.30/Zend/bench.php /opt/php/php-7.2.30/Zend/micro_bench.php

php5.6版本 /usr/local/php/php56/bin/php /opt/php/php-7.2.30/Zend/bench.php
编译安装php7和7的新特性
php7.2版本 /usr/local/php/php72/bin/php /opt/php/php-7.2.30/Zend/bench.php
编译安装php7和7的新特性
通过对比,PHP7.2版本明显比php5.6的速度快差不多3倍

四、php7的新特性

1.太空船操作符 <=>

作用:用于比较两个表达式
例如:当$a小于、等于、大于$b时它分别返回-1、0、1
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

2.类型声明

  • declare(strict_types=1); // strict_types=1 表述开启严格模式
function sumInts(int ...$ints):int{
  return array_sum($ints);
}

3.null合并操作符

  • 三目运算符: $page = isset($_GET['page']) ? $_GET['page'] : 0;
  • 合并操作符: $page = $_GET['page'] ?? 0;

4.常量数组

  • define('ANIMALS',['dog','cat'])

5.NameSpace批量导入

  • use Space{ClassA, ClassB, ClassC as C};

6.throwable接口

try{
    undefindfunc();
}catch(Error $e){
  var_dump($e)
}

set_exception_handler(function($e){
  var_dump($e);
});

7.Closure::call()

class Test{
   private $num = 1;
}
$f = function(){
  return $this->num + 1;
};

echo $f->call(new Test);

8.intdiv 函数

接收两个参数,返回值为第一个参数除于第二个参数的值并取整
intdiv(10,3);

9.list的方括号写法

$arr = [1,2,3];
list($a,$b,$c) = $arr;
# 可写为
[$a,$b,$c] = $arr;
上一篇:tp5.0+vue前后分离加入ucerter,实现同步通讯,登录,注册,退出


下一篇:php7和php5对比