整理了一些常用的新特性,欢迎点赞!!!

新增操作符
1、??
$username = $_GET['user'] ?? '';
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

2、<=>
$number1 <=> $number2; 当 $number1 小于、等于、大于 $number2 时 分别返回 -1,0,1

新增函数
intdiv(被除数, 除数) — 对除法结果取整
intdiv(3, 2) //1

define 可以定义数组
define('ANIMALS', [
'dog',
'cat',
'bird'
]);

返回类型声明
function test() :int
{
return 1; //true
return '1'; //true
return 'string'; //false
}

标量类型声明
function test(string $name) :int
{
return 22;
}
string integer float boolean

可以捕获核心错误
Error层次结构
Throwable
  Error
    ArithmeticError
      DivisionByZeroError

    AssertionError
    ParseError
    TypeError

  Exception

核心排序的优化
php5: array(1=>0, 0=>0) //快速排序(非稳定排序)
php7: array(0=>0, 1=>0) //快速排序+选择排序(稳定排序)

比php5多了个抽象语法数(abstract snytax tree) AST
PHP -> Parser -> AST ->Opcodes -> Execution
性能增加了,内存消耗也在增加但可以忽略不计

匿名类 可以通过new class实例化一个匿名类
function getAnonymousClass($config) {
return new class($config) {};
}

暂时绑定一个方法到对象上并调用
$f = function() {
p($this->name);
};

class F {
private $name = 'F';
}

$f->call(new F);

统一的语法变量
括号不影响行为 从左至右

$a = 'b';
$b = ['1', '2', '3'];
var_dump($$a[1]);
var_dump(($$a)[1]);

php5:
Notice: Uninitialized string offset: 1 in E:\Program Files\phpStudy\WWW\test.php on line 4
Notice: Undefined variable: in E:\Program Files\phpStudy\WWW\test.php on line 4
NULL

Parse error: syntax error, unexpected '[' in E:\Program Files\phpStudy\WWW\test.php on line 4

php7: string(1) "2" string(1) "2"

Expression          PHP5         PHP7
$$foo['bar']['baz']  ${$foo['bar']['baz']}   ($$foo)['bar']['baz']
$foo->$bar['baz']    $foo->{$bar['baz']}    ($foo->$bar)['baz']
$foo->$bar['baz']()    $foo->{$bar['baz']}()   ($foo->$bar)['baz']()
Foo::$bar['baz']()    Foo::{$bar['baz']}()    (Foo::$bar)['baz']()

关于命名空间
// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;

use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;

// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};

list 的修改
  1、
  list($array[], $array[], $array[]) = [1, 2, 3];
  var_dump($array);
  php5: array(3) { [0]=> int(3) [1]=> int(2) [2]=> int(1) }
  php7: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

  2、不允许赋空值
  list() = $a;
  list(,,) = $a;
  list($x, list(), $y) = $a;

  php7会报错 Fatal error: Cannot use empty list

  3、不再支持字符串拆分
  $string = "xy";
  list($x, $y) = $string;
  var_dump($x, $y);

  php5: string(1) "x" string(1) "y"
  php7: null null

foreach 的修改
变量引用,会影响对数组的循环
$array = [0];
foreach ($array as &$val) {
var_dump($val);
$array[1] = 1;
}
php5:int(0)
php7: int(0) int(1)

参考的源地址:http://www.php7.site/book/php7/variable-changes-22.html

提高php性能的tips:http://www.laruence.com/2015/12/04/3086.html

转载于:https://www.cnblogs.com/luolinzhichen/p/5788621.html

PHP7 新特性 简介相关推荐

  1. php7 ast,PHP7新特性之抽象语法树(AST)带来的变化详解

    本文分析了PHP7新特性之抽象语法树(AST)带来的变化.分享给大家供大家参考,具体如下: 这里大部分内容参照 AST 的 RFC 文档而成:https://wiki.php.net/rfc/abst ...

  2. php7的新特性有哪些,php7新特性有哪些?

    php7新特性有:将PHPNG代码合并到PHP7中:降低内存消耗:标量类型声明,可以强制执行参数和返回类型:一致的64位支持:改进了异常层次:已弃用的SAPI和扩展被删除:添加了新的空合并运算符(?) ...

  3. PHP7新特性(常用)

    PHP7新特性(常用) 致命错误将可用异常形式抛出 ?? null合并运算符 标量类型声明 返回值类型声明 太空船操作符<=>(组合比较符) 致命错误将可用异常形式抛出 在php7之后,大 ...

  4. php7.4新特性 多线程,PHP7新特性WhatwillbeinPHP7/PHPNG

    PHP7将在2015年10月正式发布,我们来看看官网给出的php7 特性 官网: http://www.php7.ca/ https://wiki.php.com/phpng PHP7新特性( Wha ...

  5. 【PHP】PHP7新特性

    PHP7新特性 PHP7.0 PHP7.0新特性 PHP7.0 变化 PHP7.1 PHP7.1新特性 PHP7.1变化 PHP7.2 PHP7.2新特性 PHP7.2变更 PHP7.3 PHP7.3 ...

  6. Oracle11g新特性简介

    转 Oracle 11g 新特性简介https://blog.csdn.net/tianlesoftware/article/details/5134819  Oracle 11g于2007年7月11 ...

  7. JDK8新特性简介、Lambda表达式、Stream流常用api介绍

    JDK8新特性简介.Lambda表达式.Stream流常用api介绍 接口 Java1.8前接口中是不允许有普通方法的,在Java1.8后允许接口中有普通方法,只需要加上default关键字即可: J ...

  8. PHP7新特性和废弃的函数

    一篇写给准备升级PHP7的小伙伴的文章 https://blog.csdn.net/u011957758/article/details/73320083 PHP7新特性 https://lvtao. ...

  9. PHPStorm使用PHP7新特性出现红色波浪错误

    今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...

最新文章

  1. linux 使用sendmail发送邮件
  2. nRF905 - 系列示意图
  3. java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...
  4. 如何在不亏本的情况下构建道德数据科学系统?
  5. android项目中单实例数据库类
  6. 区分基于Ant目标的Gradle任务
  7. vue baidu map之获取选中点的经纬度
  8. 【Java从0到架构师】MyBatis - dao
  9. 11 wifi6速率_什么是WiFi 6?究竟有多6?
  10. 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
  11. 游戏美术设计干货分享:制造“冲突”,提高画面张力
  12. ASP.NET Page执行顺序如:OnPreInit()、OnInit()(转)
  13. unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)
  14. 糖豆推荐系统第一期开发与评估报告
  15. 《测绘综合能力》——摄影测量与遥感
  16. 大学生计算机应用大赛广告设计,计算机应用工程系第四届“经纬在线杯”网页广告设计大赛圆满结束...
  17. 百度热力图颜色说明_揭秘!看完徐州城市人口热力图,你就知道该在哪儿买房了...
  18. mac卸载了xcode后,运行软件提示:xcode-select: error: invalid developer directory
  19. CoAP协议之初探(一)
  20. QCustomplot(五)QCPAxisRect进行子绘图

热门文章

  1. Swift实现OC中的单例模式
  2. 作为一个新手程序员该如何成长?
  3. IPsec ***基础:认识IPsec ***
  4. Silverlight 属性样式、控件模板、视觉状态
  5. Pixysoft.Framework.Noebe.Comets开发实录
  6. 光华科技光刻胶_光刻胶概念走强,6天5板!21只光刻胶概念出炉!(名单)
  7. linux上开发应用程序_如何在Linux上安装软件应用程序
  8. Bootstrap3 下拉菜单及其调用方式
  9. Bootstrap 徽章 badge
  10. Bootstrap创建拼接式按钮下拉菜单