强类型返回值|学习笔记

简介: 快速学习强类型返回值

开发者学堂课程【PHP 基础入门课程(下)强类型返回值】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/710/detail/12638


强类型返回值


内容介绍:

一、概念

二、代码示例

三、小结


一、概念

强类型返回值:指在函数定义时就规定好函数的返回值类型。

1、强类型是 PHP 的8种类型

2、强类型规定后,函数内部的返回值必须是指定类型。(否则系统会报错。)

3、想让强类型完全生效,需要提前声明

(1)declare(strict_types = 1)

4、强类型返回值语法

5、function 函数名():返回值类型{}


二、代码示例

示例:

#判定数据是否是整形

function is_my_int($n):bool{

if(is_integer($n)){

return TRUE;}e1se{

return 'no';

is_my_int(3.1); #报错:返回值类型必须是布尔类型,返回了一个字符串。

需要提前给一个 bool ,是整型返回 TRUE,否则返回 no,当然 no 不是布尔类型,那就要去检测是否能够成功。

实例:

#强制返回值类型

function is_my_int1($n){

if(is_integer($n)) return TRUE;

else return 'no';}

// var_dump(is_my_int1('hello')); //结果错误

明显不是一个整型,运行结果如下图,得到一个 no,没有任何的说明,因为返回什么类型没有规定,所以给什么类型就是什么类型。

image.png

所以这样不够精确,想要更精确换种方式,

function is_my_int2($n):bool{

if(is integer($n))

return TRUE;

else return 'no'; #在没有开启强类型检查,虽然规定了返回值为 bool 类型,但是系统不强制检查,但会强制转换。

//如果将此处改为空值,结果返回 flase 。

var dump(is my_int2(1));

var dump(is_my_int2(1.1));

运行结果如下图,发现结果为 bool(true),

image.png

难道是判定 is_integer 走 return TRUE,要注意,#在没有开启强类型检查,虽然规定了返回值为 bool 类型,但是系统不强制检查,但会强制转换 。也就是把 no 字符串转化成布尔,no 的布尔为 TRUE,把 no 改成空字符串,

#强制返回值类型

function is_my_int1($n){

if(is_integer($n)) return TRUE;

else return 'no';}

// var_dump(is_my_int1('hello')); //结果错误

function is_my_int2($n):bool{

if(is integer($n))

return TRUE;

//else return ''; #在没有开启强类型检查,虽然规定了返回值为 bool 类型,但是系统不强制检查,但会强制转换 。

//如果将此处改为空值,结果返回 flase 。

else return flase //保证返回值类型本身是 bool 类型。

var dump(is my_int2(1));

var dump(is_my_int2(1.1));

image.png

返回结果是 false,所以说明在 else return 位置进行转换,也能达到强制的类型,但与目标还是有点区别,所以想要解决问题时需要用到 declare(strict_types = 1)告知系统我们必要严格检查,

image.png

添加 declare(strict_types = 1)如上图,运行结果

image.png

错误原因是声明要放到最前面,刷新,

image.png

此时错误为必须为布尔类型,所以把 else return ''改成 else return false,刷新,

image.png

保证返回值类型本身的类型是 bool ,而不是系统帮助转成 bool,前面是没开启强类型检查,自动转化成 bool。


三、小结

1、强类型返回值是在定义函数时规定

(1)规定返回值类型

(2)在函数内部使用返回值时必须对应返回值类型

2、强类型返回值的作用

保证数据的规范性(对外提供规范数据) // 系统检查在定义时返回值是否能够达到预期的目标,帮助代码使用更加方便。

3、想让强类型返回值生效,依赖强类型开启

(1)在脚本前面添加:declare(strict_types=1)

相关文章
|
7月前
|
JavaScript 前端开发 Java
02 # 类型基础:强类型与弱类型
02 # 类型基础:强类型与弱类型
61 0
|
1月前
|
存储 编译器 Go
go语言中的变量、常量、数据类型
【11月更文挑战第3天】
36 9
|
4月前
|
开发框架 .NET C#
C#语言进阶(四) 枚举器和迭代器
C#语言进阶(四) 枚举器和迭代器
36 0
|
7月前
|
安全 程序员 编译器
C语言中的枚举数据类型深入解析
C语言中的枚举数据类型深入解析
126 2
|
7月前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
62 0
|
7月前
|
C语言
在C语言中函数的返回值及其应用示例
在C语言中函数的返回值及其应用示例
109 2
|
Go
详细介绍 Go 语言中函数的特点、定义、参数传递、返回值、匿名函数
详细介绍 Go 语言中函数的特点、定义、参数传递、返回值、匿名函数
153 39
详细介绍 Go 语言中函数的特点、定义、参数传递、返回值、匿名函数
|
7月前
|
供应链 算法 安全
掌握Go语言:函数精髓,定义、参数、多返回值与应用(14)
掌握Go语言:函数精髓,定义、参数、多返回值与应用(14)
|
7月前
|
存储 C语言 索引
C语言——构造数据类型
C语言——构造数据类型
118 0
|
7月前
|
编译器 C++
在C++语言中类的重载
在C++语言中类的重载
37 0