• PHP7新增 功能


    php7发布已有半月,最近有时间了解一下php7的新特性,当然,这个版本最大的特点是性能的提升。在下并非高手,欢迎大家指出错误,同时期待共同交流

    1.在use语句增加了group支持
    use FooLibraryBarBaz{ ClassA, ClassB, ClassC, ClassD as Fizbo };


    2.增加??操作符
    isset($_GET['mykey']) ? $_GET['mykey'] : ""笨重
    $_GET['mykey'] ?: "" 当mykey不存在时会报一个E_NOTICE
    $_GET['mykey'] ?? 'defaultvalue' 安全不会报E_NOTICE
    $username = $_GET['user'] ?? 'nobody';

    3. 64位PHP7字符串长度可以超过2^31次方字节。

    4.增加Closure::call支持
    Closure::call将一个闭包函数动态绑定到一个新的对象实例并调用执行该函数,

     1 <?php
     2 class Value {
     3 protected $value;
     4 
     5 public function __construct($value) {
     6 $this->value = $value;
     7 }
     8 
     9 public function getValue() {
    10 return $this->value;
    11 }
    12 }
    13 
    14 $three = new Value(3);
    15 $four = new Value(4);
    16 
    17 $closure = function ($delta) { var_dump($this->getValue() + $delta); };
    18 $closure->call($three, 4);
    19 $closure->call($four, 4);
    20 ?>
    21 // outputs int(7),int(8)

    5.双引号字符串和heredocs里面支持使用u{xxxxx}来声明unicode字符。

    6.define对数组的支持

    1 define('ANIMALS', array(
    2 'dog',
    3 'cat',
    4 'bird'
    5 ));
    6 echo ANIMALS[1]; // outputs "cat"

    7.增加比较运算符<=>
    $a <=> $b
    如果a等于b则为0
    如果a大于b则为1
    如果a小于b则为-1

    8.php全局保留字可以声明使用

    1 class View {
    2     public function include(View $view) {
    3         //...
    4     }
    5 }

    include关键字可以当普通字符串关键字一样被使用

    9.标量类型(int,float,string,bool)支持
    增加declare(strict_types=1)指令声明是否严格类型校验,
    当在文件头声明declare(strict_types=1)

    1 <php
    2 
    3 declare(strict_types=1);
    4 function add(float $a, float $b): float {
    5     return $a + $b;
    6 }
    7 add(1, 2); // float(3)

    以上代码如果不开启declare(strict_types=1)或许declare(strict_types=0),php将自动转换参数和返回值到指定类型,
    开启declare(strict_types=1),如果参数类型不是flaot或许返回类型不是float则抛出错误

    10.增加接口为用户层提供安全方便的随机数生成器。RFC: https://wiki.php.net/rfc/easy_userland_csprng (后续再议)

    11.增加了yield from 操作符。https://wiki.php.net/rfc/generator-delegation (后续再议)

  • 相关阅读:
    ArrayList和Vector的区别?HashMap和Hashtable的区别?
    试题:关键字public, private, protected的区别?以及不写时默认是什么?
    试题:用JavaScript实现密码验证功能
    RPC和RMI的区别(Difference Between RPC and RMI)
    js中从blob提取二进制
    netty 3.9.2 UDP协议服务器和客户端DEMO
    Java NIO的多路复用及reactor
    android屏蔽home键的实现
    搜索引擎对相似图片搜索识别的原理(一)
    代理模式(设计模式)
  • 原文地址:https://www.cnblogs.com/xiezhengcai/p/php7.html
Copyright © 2020-2023  润新知