iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP类型声明特性实例分析
  • 873
分享到

PHP类型声明特性实例分析

2023-06-30 12:06:15 873人浏览 独家记忆
摘要

这篇文章主要介绍“PHP类型声明特性实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php类型声明特性实例分析”文章能帮助大家解决问题。最近在研究PHP7的新特性,发现PHP也开始搞类型声明了

这篇文章主要介绍“PHP类型声明特性实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php类型声明特性实例分析”文章能帮助大家解决问题。

PHP类型声明特性实例分析

最近在研究PHP7的新特性,发现PHP也开始搞类型声明了,这么做的好处很明显:能提高程序运行速度。

下面开始介绍这一新特性:

默认情况下,所有的PHP文件都处于弱类型校验模式。

PHP7+增加了类型声明的特性,类型声明有两种模式:

  • 强制模式 (默认模式) 我的理解就是强制转换成需要的类型,不严格区分类型而是强转,类型不一致不报错

  • 严格模式 严格校验类型,类型与声明的不一致,报错

标量类型声明语法格式:

declare(strict_types=1);

其中strict_types的值:

  • 1表示严格类型校验模式,作用于函数调用和返回语句;

  • 0表示弱类型校验模式

可以使用的类型参数有:

  • string

  • int

  • float

  • bool

  • interfaces

  • array

  • callable

强制模式(默认模式)

<?phpfunction sum(int ...$ints){   return array_sum($ints);}print(sum(1, '2', 3.1));?>

以上程序执行输出结果为:6

分析一下即:将字符串类型的'2'转换成整型的2,将float类型的3.1转换为整型的3后再相加,得出结果6。

严格模式

<?phpdeclare(strict_types=1);function sum(int ...$ints){   return array_sum($ints);}print(sum(1, '2', 3.1));?>

以上程序因为采用了严格模式,因为第二个参数不是int类型,执行结果报错如下:

PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……

返回类型声明

PHP7+ 增加了对返回类型声明的支持,返回类型声明指明了函数返回值的类型。

可以声明的返回类型有:

  • string

  • int

  • float

  • bool

  • interfaces

  • array

  • callable

我踩的坑

这里我还真趟过坑,在新版本的phpstORM中会根据返回值类型出现提示代码,引导添加返回类型声明,我就加上了。但是后面因为业务的变化或者代码优化只修改了返回值(比如之前返回的是array,修改后返回了int),却忘记了修改返回类型声明(毕竟习惯了PHP弱语言类型这么多年了...),这样是会抛出异常导致报错的,这就是我踩到的坑,小伙们们在使用过程中要注意。

思考

GO语言是不会出现我上面说的问题的, 因为如果返回值类型和返回类型声明是编译不通过的,编译的时候就会报错。

而PHP作为弱类型语言,虽然做了返回类型声明这种优化,但是语言执行前不需要我们编译,直接发布运行,也就不能做到go语言的“编译报警”了,PHP会在执行的时候直接抛出异常。

<?phpdeclare(strict_types=1);function returnIntValue(int $value): int{   return $value;}print(returnIntValue(5));?>

以上程序执行输出结果为:5

返回类型声明错误示例

<?phpdeclare(strict_types=1);function returnIntValue(int $value): int{   return $value + 3.0;}print(returnIntValue(1));?>

以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,导致报错,执行输出结果为:Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...

void 函数

注意:定义返回类型为 void 的函数不能有返回值,即使返回 null 也不行。

返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。

实例

<?phpfunction exchange(&$left, &$right) : void{    if ($left === $right) {        return;    }    $tmp = $left;    $left = $right;    $right = $tmp;}$a = 1;$b = 2;var_dump(exchange($a, $b), $a, $b);

以上实例输出结果:

null int(2) int(1)

关于“PHP类型声明特性实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网PHP编程频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: PHP类型声明特性实例分析

本文链接: https://www.lsjlt.com/news/328671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP类型声明特性实例分析
    这篇文章主要介绍“PHP类型声明特性实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP类型声明特性实例分析”文章能帮助大家解决问题。最近在研究PHP7的新特性,发现PHP也开始搞类型声明了...
    99+
    2023-06-30
  • php7新特性之标量类型声明的案例分析
    这篇文章主要介绍php7新特性之标量类型声明的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!PHP7增加了标量类型声明的特性,标量类型声明有两种模式   :强制模式(默认)严格模式   &...
    99+
    2023-06-14
  • TypeScript类型声明书写的示例分析
    这篇文章主要介绍TypeScript类型声明书写的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基本类型 // 变量  const n...
    99+
    2024-04-02
  • php7新特性之返回类型声明的使用案例
    这篇文章主要介绍了php7新特性之返回类型声明的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。突然感觉,php逐渐走向强类型语言了,和java、c++这类强类型语言有...
    99+
    2023-06-14
  • ES6中let变量声明以及特性的示例分析
    这篇文章主要介绍了ES6中let变量声明以及特性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。let 变量声明以及特性声明变量&n...
    99+
    2024-04-02
  • JavaScript声明提升实例分析
    本篇内容主要讲解“JavaScript声明提升实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript声明提升实例分析”吧!   ...
    99+
    2024-04-02
  • Python中类的声明,使用,属性,实例
    类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 (当没有实体时 使用pass代替) 下面定义一个鸟类; class ...
    99+
    2023-01-31
    实例 属性 声明
  • PHP中标量类型、复合类型和特殊类型的示例分析
    这篇文章主要介绍了PHP中标量类型、复合类型和特殊类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在PHP中,支持8种原始数据类型,其中包括四种标量类型、两种复合...
    99+
    2023-06-20
  • JavaScript三大变量声明实例分析
    这篇文章主要讲解了“JavaScript三大变量声明实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript三大变量声明实例分析”吧!Varvar 操作符用于定义变量(va...
    99+
    2023-06-30
  • CSS3特性实例分析
    本文小编为大家详细介绍“CSS3特性实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS3特性实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 我们来看下对比效...
    99+
    2024-04-02
  • Go1.18新特性之泛型实例代码分析
    本篇内容主要讲解“Go1.18新特性之泛型实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go1.18新特性之泛型实例代码分析”吧!1. 一切从函数的形参和实参说起假设我们有个计算两数...
    99+
    2023-07-05
  • PHP类型转换实例代码分析
    今天小编给大家分享一下PHP类型转换实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基本数据类型首先,我们需要了解...
    99+
    2023-07-05
  • CTF中的PHP特性函数实例分析
    这篇文章主要介绍“CTF中的PHP特性函数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CTF中的PHP特性函数实例分析”文章能帮助大家解决问题。MD5强弱碰撞对于MD5加密大家一定很熟悉,...
    99+
    2023-07-05
  • JDK8新特性实例分析
    这篇“JDK8新特性实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JDK8新特性实...
    99+
    2024-04-02
  • C#中怎么实现类型声明
    本篇文章给大家分享的是有关C#中怎么实现类型声明,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#类型声明定义新的引用类型。一个类可以从另一个类继承,并且可以实现多个接口。类成...
    99+
    2023-06-17
  • Python 3.9.0新特性实例分析
    这篇文章主要介绍“Python 3.9.0新特性实例分析”,在日常操作中,相信很多人在Python 3.9.0新特性实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python 3.9.0新特性实例分析...
    99+
    2023-06-27
  • C++的定义,声明和初始化实例分析
    这篇文章主要介绍了C++的定义,声明和初始化实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的定义,声明和初始化实例分析文章都会有所收获,下面我们一起来看看吧。定义变量的定义用于为变量分配存储空间,...
    99+
    2023-06-29
  • ECMAScript数据类型之Number类型实例分析
    这篇文章主要介绍“ECMAScript数据类型之Number类型实例分析”,在日常操作中,相信很多人在ECMAScript数据类型之Number类型实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ECM...
    99+
    2023-06-30
  • C#类型转换实例分析
    这篇“C#类型转换实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#类型转换实例分析”文章吧。C# 类型转...
    99+
    2023-06-17
  • Java新特性使用实例分析
    这篇文章主要介绍“Java新特性使用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java新特性使用实例分析”文章能帮助大家解决问题。枚举:尽管在 JDK 5 中增加了枚举类型,但是 Cla...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作