PHP7新特性之类型声明
今天我在这里总结下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新特性之类型声明的更多相关文章
- 【php】php7新特性及其优化原理
php7.x版本系列相比之前的php的版本提交性能提高了不少,这里面其中的一些主要改变是性能提高的关键,主要有以下内容. 1.zval使用栈内存 在zend引擎和扩展中,经常要创建php变量,其底 ...
- 【ElasticSearch】ES5新特性-keyword-text类型-查询区别
ES5新特性-keyword-text类型-查询区别 elasticsearch-head Elasticsearch-sql client junneyang (JunneYang) es keyw ...
- PHPStorm使用PHP7新特性出现红色波浪错误
今天在项目中使用PHP7新特性时PHPStorm出现了如下红色错误,看着让人很不舒服,明明没有错 本地配置LNMP的PHP版本是7.2所以不是安装的PHP版本过低的问题,而是PHPStorm默认支持的 ...
- Python 3 新特性:类型注解——类似注释吧,反正解释器又不做校验
Python 3 新特性:类型注解 Crossin 上海交通大学 计算机应用技术硕士 95 人赞同了该文章 前几天有同学问到,这个写法是什么意思: def add(x:int, y:int) - ...
- PHP7 新特性 简介
整理了一些常用的新特性,欢迎点赞!!! 新增操作符 1.?? $username = $_GET['user'] ?? ''; $username = isset($_GET['user']) ? $ ...
- PHP7新特性 What will be in PHP 7/PHPNG
本文结合php官网和鸟哥相关文章总结: 官网:http://www.php7.ca/ https://wiki.php.net/phpng PHP7将在2015年10月正式发布,PHP7 ,将会是 ...
- PHP7新特性的介绍
关于PHP 20年的发展历史: 迄今为止最流行的WEB开发语言: 超过82%的网站都会使用PHP作为他们的服务端开发语言: 新特性介绍 PHP NG – Zend Engine 3 抽象语法树 64位 ...
- php7 新特性整理
PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希望PHP越来越好. 在这里整理 PHP 5.1 ,PHP5.2,PHP5.3,PHP5.4,PHP ...
- php7+新特性
php7已经发布有段时间了,查了下正式版本的发布时间是2015年底,至于具体的新特性,在这里总结一下. 标量类型声明 php7新增了4种类型, 字符串(string), 整数 (int), 浮点数 ( ...
- php7新特性的理解和比较
1. null合并运算符(??) ??语法: 如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数. //php7以前 if判断 if(empty($_GET['param']) ...
随机推荐
- PageOffice动态生成Word文件并转换为PDF
说明:PageOffice是客户端插件,做不到纯后台调用把word转为pdf.但是pageoffice的FileMaker对象可以实现不在客户端打开文件直接转换文件为pdf并保存到服务器端,看起来跟服 ...
- 【漏洞复现】蓝凌OA sysUiComponent 任意文件上传漏洞
阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站.服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作.利用此文所提供的信息而造成的直接 ...
- 基于FPGA的数字钟设计---第三版
欢迎各位朋友关注"郝旭帅电子设计团队",本篇为各位朋友介绍基于FPGA的数字钟设计---第三版. 功能说明: 1. 在数码管上面显示时分秒(共计六个数码管,前两个显示小时:中间两个 ...
- Django 视图views的基本使用
在 Django 中,视图函数是一个 Python 函数或者类,开发者主要通过编写视图函数来实现业务逻辑.视图函数首先接受来自浏览器或者客户端的请求,并最终返回响应,视图函数返回的响应可以是 HTML ...
- HTML——input之单选按钮
在 HTML 中,把 <input> 标签的 type 属性设置为 radio 可以表示单选按钮.具体语法格式如下: <input type="radio" /& ...
- 浅谈C#中取消令牌CancellationTokenSource
基础操作 CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); cancellationTo ...
- Xcode 自动化构建问题梳理
一.Xcode Xcode是mac OS平台上面开发的官方IDE,可以用来开发iOS应用和mac应用.随着iOS系统的升级,Xcode也会更新,而且是强制更新. Xcode每次版本更新稳定性很差,经常 ...
- JS中BOM事件,JS样式特效,表格对象和表单操作
DOM事件 1.DOM中的事件可以分为两类 1.浏览器行为 如:文档加载完成,图片加载完成 2.用户行为 如:输入框输入数据,点击按钮 (2).常见的DOM事件 onload 浏览器已完成页面的加载 ...
- vue3拉取代码install 报错 npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: npm ERR! Found: vue@3.2.31
先看报错 说明安装的包和现有的包已经冲突了版本不一致 我们先试一下npm install @vue/cli -- force然后再试一下npm install @vue/cli --legacy-pe ...
- 算法金 | 一文彻底理解机器学习 ROC-AUC 指标
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环.而 ROC(Rece ...