今天我在这里总结下PHP7主要的新特性。

1.类型声明

做过php开发的小伙伴们都知道,php7以前的版本变量是不需要声明类型的,函数返回值也是不需要声明类型的,总之,在我们的脑海中就没有这么回事。可能有小伙伴好奇如果声明了类型会不会报错呢?那我们先来一睹为快(下面的代码运行环境linux+php5.4+nginx)

1
2
3
int $a = 0;
string $b 'abc';
echo $a;

输出结果:

  

从输出结果看会报语法错误,看样子不能这么写,那我们看下函数的参数能不能声明参数。

1
2
3
4
5
6
7
function sumInt(int $a,int $b) {
    return $a+$b
}
 
$a = 1;
$b = 2;
sumInt($a,$b);

输出结果:

发现报错,说明不能这么写,我们再仔细看下报错,意思是参数的类型必须是类的一个对象

再看个例子:

1
2
3
4
5
6
7
8
9
10
class Cat{
 
}
 
function sumInt(Cat $a) {
      var_dump($a);
}
 
$a new Cat();
sumInt($a);

输出结果如下:

  

发现可以正常输出,发现变量换成数组也是可以的,这里就不举例说明了。

那接下来我们再看下php7 下同样的代码会怎么样?

1
2
3
int $a = 0;
string $b 'abc';
echo $a;

输出结果如下:

发现同样会报错,看来我们的php7对这种变量类型声明还是不支持,那我们再看下函数的参数是否可以设置参数的类型

 

1
2
3
4
5
6
7
function sumInt(int a,int b) {
    return $a+$b
}
 
$a = 1;
$b = 2;
sumInt($a,$b);

输出结果是3,说明php7支持这种类型声明,经实践变量的类型是类的对象或者数组也是可以的

可能有小伙伴比较好奇为什么php7会加上了类型声明,加上了但又不像强类型语言那样,可以直接给任何变量设置类型,本人的理解是php7之所以加上类型声明是追求更快的速度,为什么这么说呢?我们都知道任何一个变量都需要一定的空间存储,那么就会涉及到变量内存分配的问题,php7之前的版本变量分配的内存是根据变量的值来判断变量的类型然后再分配内存的,如果改成先声明变量的类型就省了一步,速度自然快了不少。说到这里又小伙伴可能就会说为什么有些地方不能使用变量类型声明了,本人的理解是如果改成和强类型语言一样,可能和之前的版本跨度比较大,相信后续的版本会继续完善

 
 

PHP7新特性之类型声明的更多相关文章

  1. 【php】php7新特性及其优化原理

    php7.x版本系列相比之前的php的版本提交性能提高了不少,这里面其中的一些主要改变是性能提高的关键,主要有以下内容. 1.zval使用栈内存   在zend引擎和扩展中,经常要创建php变量,其底 ...

  2. 【ElasticSearch】ES5新特性-keyword-text类型-查询区别

    ES5新特性-keyword-text类型-查询区别 elasticsearch-head Elasticsearch-sql client junneyang (JunneYang) es keyw ...

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

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

  4. ​Python 3 新特性:类型注解——类似注释吧,反正解释器又不做校验

    ​Python 3 新特性:类型注解 Crossin ​ 上海交通大学 计算机应用技术硕士 95 人赞同了该文章 前几天有同学问到,这个写法是什么意思: def add(x:int, y:int) - ...

  5. PHP7 新特性 简介

    整理了一些常用的新特性,欢迎点赞!!! 新增操作符 1.?? $username = $_GET['user'] ?? ''; $username = isset($_GET['user']) ? $ ...

  6. PHP7新特性 What will be in PHP 7/PHPNG

    本文结合php官网和鸟哥相关文章总结: 官网:http://www.php7.ca/   https://wiki.php.net/phpng PHP7将在2015年10月正式发布,PHP7 ,将会是 ...

  7. PHP7新特性的介绍

    关于PHP 20年的发展历史: 迄今为止最流行的WEB开发语言: 超过82%的网站都会使用PHP作为他们的服务端开发语言: 新特性介绍 PHP NG – Zend Engine 3 抽象语法树 64位 ...

  8. php7 新特性整理

    PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希望PHP越来越好. 在这里整理 PHP 5.1 ,PHP5.2,PHP5.3,PHP5.4,PHP ...

  9. php7+新特性

    php7已经发布有段时间了,查了下正式版本的发布时间是2015年底,至于具体的新特性,在这里总结一下. 标量类型声明 php7新增了4种类型, 字符串(string), 整数 (int), 浮点数 ( ...

  10. php7新特性的理解和比较

    1. null合并运算符(??) ??语法: 如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数. //php7以前 if判断 if(empty($_GET['param']) ...

随机推荐

  1. SSMS表设计器显示说明(注释)字段

    原文地址:https://www.giantliu.cn/2020/09/14/200914SSMSTableDesignAddDescription/ SQL Server Management S ...

  2. hadoop部署2

    完全分布式部署介绍 学习目标 完全分部式是真正利用多台Linux主机来进行部署Hadoop,对Linux机器集群进行规划,使得Hadoop各个模块分别 部署在不同的多台机器上. 能够了解完全分布式部署 ...

  3. C#的GroupBy方法是如何工作的

    前言:先贴结果 GroupBy方法是如何工作的? 一.准备6个待分组的学生对象 class student { public string name;//姓名 public int grade;//年 ...

  4. C++ Virtual Functions

    Virtual这个关键字在多态中扮演一个绝对重要的角色,只要member functions声明的前面加上virtual的关键字,他就会成为 Virtual member functions.任何一个 ...

  5. 从零开始写 Docker(十五)---实现 mydocker run -e 支持环境变量传递

    本文为从零开始写 Docker 系列第十五篇,实现 mydocker run -e, 支持在启动容器时指定环境变量,让容器内运行的程序可以使用外部传递的环境变量. 完整代码见:https://gith ...

  6. Python 潮流周刊#52:Python 处理 Excel 的资源

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. Ubuntu 更改鼠标滚轮速度

    1.安装imwheel sudo apt-get install imwheel 2.更改配置 sudo gedit ~/.imwheelrc 输入以下内容: ".*"None,  ...

  8. 夜莺项目发布 v6.5.0 版本,暗黑菜单来了

    大家好,夜莺项目发布 v6.5.0 版本,启用新 logo,菜单支持换肤,支持了暗黑版本的菜单,下一步会支持全站暗黑主题,敬请期待,下面是新 logo. 暗黑菜单 页面右上角点击用户名,在下拉框里会有 ...

  9. XML文档定义的几种形式和本质区别

    XML文档定义的形式 两种定义形式:DTD.Schema DTD:数据类型定义(Data Type Definition),用以描述XML文档的文档结构,是早期的XML文档定义形式. Schema:其 ...

  10. JS 过滤掉两个数组中对象id值相等的项

    const arr1 = [{ id: 1, name: '老二' }]; const arr2 = [{ id: 1, name: '网' }, { id: 2, name: '二位' },{ id ...