php5和php7对比

  1. php标量类型和返回类型声明

    1
    2
    //主要分为两种模式,强制性模式和严格模式:1表示严格类型校验模式,作用于函数调用和返回语句;0表示弱类型校验模式。
    declare(strict_types=1)
  2. NULL合并运算符

    1
    2
    3
    $site = isset($_GET['site']) ? $_GET['site'] : 'wo';
    #简写成
    $site = $_GET['site'] ??'wo';
  3. 组合预算符

    1
    2
    3
    4
    // 整型比较
    print( 1 <=> 1); // 0
    print( 1 <=> 2); // -1
    print( 2 <=> 1); // 1
  4. 常量数组

    1
    2
    3
    4
    5
    6
    // 使用 define 函数来定义常量数组
    define('sites', [
    'Google',
    'Jser',
    'Taobao'
    ]);
  5. 匿名类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    interface 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($msg);
    }
    });

    $app->getLogger()->log("我的第一条日志");
  1. Closure::call()方法增加,意思向类绑定个匿名函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class A { 
    private $x = 1;
    }
    // 之前版本定义闭包函数代码
    $getXCB = function() {
    return $this->x;
    };

    // 闭包函数绑定到类 A 上
    $getX = $getXCB->bindTo(new A, 'A');
    echo $getX();

    // PHP 7+ 代码
    $getX = function() {
    return $this->x;
    };
    echo $getX->call(new A);
  2. CSPRNG(伪随机数产生器)。

    1
    2
    3
    引入几个 CSPRNG 函数:
    random_bytes() - 加密生存被保护的伪随机字符串。
    random_int() - 加密生存被保护的伪随机整数。
  3. 异常

    1
    PHP 7 异常用于向下兼容及增强旧的assert()函数。
  1. use 语句改变

    1
    2
    // 导入同一个namespace下的类简写
    use some\namespace\{ClassA, ClassB, ClassC as C};
  2. Session 选项

    1
    2
    3
    4
    5
    6
    * session_start()可以定义数组
    session_start(&#91;
    'cache_limiter' => 'private',
    'read_and_close' => true,
    ]);
    * 引入了一个新的php.ini设置(session.lazy_write),默认情况下设置为 true,意味着session数据只在发生变化时才入。
  3. PHP 7 移除的扩展

    1
    2
    3
    4
    mssql
    mysql
    sybase_ct
    ereg