PHP方法的返回值示例详解

前言

不仅是PHP,大部分编程语言的函数或者叫方法,都可以用return来定义方法的返回值。从函数这个叫法来看,本身它就是一个计算操作,因此,计算总会有个结果,如果你在方法体中处理了结果,比如进行了持久化保存,那么这个函数就不用返回任何内容。而计算的结果是要给外部使用的,这时候就要将计算结果进行返回了。

return关键字

function testA($a, $b)
{
 echo $a + $b;
}

var_dump(testA(1, 2)); // NULL

function testB($a, $b)
{
 return $a + $b;
}

var_dump(testB(1, 2)); // 3

function testC($a, $b)
{
 return;
 echo $a + $b; // 后面不会执行了
}

var_dump(testC(1, 2)); // NULL

不用return或者直接return;都会返回NULL,return会阻断方法体中后续代码的执行。如果要返回多个值,只能使用数组组装数据。

function testD($a, $b)
{
 return [
  $a + $b,
  $a * $b,
 ];
}

var_dump(testD(1, 2)); // [3, 2]

返回值类型声明

关于返回值这一块还是比较好理解的。下面才是重头戏,在PHP7的新特性中,返回值声明是非常亮眼的一道风景。

function testE($a, $b) : bool
{
 if($a+$b == 3){
  return TRUE;
 }else{
  return NULL;
 }
}

var_dump(testE(1, 2)); // true
var_dump(testE(1.1, 2.2)); //TypeError: Return value of testE() must be of the type bool, null returned

如上例所示,如果返回值不是bool类型,那么将直接报TypeError的错误。

那么定义了返回值类型声明有什么好处呢?我们在PHP方法参数的那点事儿 有介绍过类型声明的好处,这里就不过多赘述了,不管是参数类型声明还是返回值类型声明,都是一样的。

function testF($a, $b): array
{
 return [
  $a + $b,
  $a * $b,
 ];
}
var_dump(testF(1, 2)); // [3, 2]

interface iA{

}
class A implements iA
{}
class B extends A
{
 public $b = 'call me B!';
}

function testG(): A
{
 return new B();
}

function testH(): B
{
 return new B();
}

function testI(): iA
{
 return new B();
}

var_dump(testG()); // B的实例
var_dump(testH()); // B的实例
var_dump(testI()); // B的实例

同样,数组和类类型都是可以声明定义的。不过除此之外,返回值声明还可以定义void。它的作用其实就是声明返回值为NULL,不能直接写:NULL,而只能用:void来进行声明。

function testJ(): void
{
 echo "testJ";
 // return 1;
}
var_dump(testJ());

这时,如果尝试进行任何的return返回,都会直接报错:Fatal error: A void function must not return a value。

总结

我们可以看到,PHP在不断的发展中一直在吸取其他语言中的优秀特性。很明显,添加这些类型声明的目的就是为了将来的编译器做准备的。这也是PHP8的一个重要特性,让我们拭目以待吧!

到此这篇关于PHP方法的返回值的文章就介绍到这了,更多相关PHP方法返回值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP方法的返回值.php
参考文档:

https://www.php.net/manual/zh...

(0)

相关推荐

  • PHP调用MySQL存储过程并返回值的方法

    本文实例讲述了php中调用执行mysql存储过程然后返回由存储过程返回的值,分享给大家供大家参考.具体分析如下: 调用存储过程的方法. a.如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,一个php变量,也可以不必,只是没有php变量时,没有办法进行动态输入,一个Mysql变量. b.如果存储过程有OUT变量,声明一个Mysql变量,mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句,入set @mysql

  • PHP CURL获取返回值的方法

    在CURL中有一个参数 CURLOPT_RETURNTRANSFER : 复制代码 代码如下: curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 默认是 0 直接返回获取的输出的文本流,有时候,我们要拿返回值来做判断或者做其他用途的话那就不太好了. 幸好CURLOPT_RETURNTRANSFER  可以设置,如果设置成CURLOPT_RETURNTRANSFER 1: 复制代码 代码如下: curl_setopt($ch, CURLOPT_RETURNT

  • 关于PHP通用返回值设置方法

    遇到一个不错的php代码.记录一下. 在写php代码时,经常会遇到需要返回值的情况,可以统一设置一下返回值的格式. 下面就是一个不错的例子. 配置类Return.conf.php <?php define("return_val", "return array('code' => 0, 'msg' => '', 'data' => '');"); define("RETURN_SUCCESS", 0); define(&q

  • PHP调用存储过程返回值不一致问题的解决方法分析

    本文实例讲述了PHP调用存储过程返回值不一致问题的解决方法.分享给大家供大家参考,具体如下: 今天遇一个同学聊存储过程返回值经常得到意外的值为null, 因为白天有事,晚上给做一个实验放在这里供有相应问题的同学查看一下. 存储过程: delimiter// createprocedureusp_s2(outpar1int) begin selectinet_ntoa(ip),portfromproxy_listlimit5; selectcount(*)intopar1fromproxy_lis

  • PHP方法的返回值示例详解

    前言 不仅是PHP,大部分编程语言的函数或者叫方法,都可以用return来定义方法的返回值.从函数这个叫法来看,本身它就是一个计算操作,因此,计算总会有个结果,如果你在方法体中处理了结果,比如进行了持久化保存,那么这个函数就不用返回任何内容.而计算的结果是要给外部使用的,这时候就要将计算结果进行返回了. return关键字 function testA($a, $b) { echo $a + $b; } var_dump(testA(1, 2)); // NULL function testB(

  • Django中get()和filter()返回值区别详解

    先上官方文档! filter(**kwargs) 返回包含与给定查找参数匹配的对象的新查询集. 简单来说,返回一个又对象组成的查询集合 get(**kwargs) 返回与给定查找参数匹配的对象,该对象应采用字段查找中描述的格式. 例子 例如在Model中有一个Order类,包含一个id字段,输入 id 为2019 字段的 id 1.get()方法 orders = Orders.objects.get(id=20190003) print(order) 先查看orders是什么,结果为 Orde

  • python四则运算表达式求值示例详解

    目录 四则运算表达式求值 思路说明 算法步骤 代码 四则运算表达式求值 思路说明 使用双栈来实现——存放数值的栈 nums 与存放运算符的栈 ops. 算法步骤 对原始表达式字符串 exp 进行预处理, 将其转为一个元素对应一个数值或运算符的列表 explist. 遍历 explist , 每个元素依次压入对应的栈中. 每次压入后, 判断当前两栈顶是否可进行乘除运算.栈顶可进行乘除运算的充要条件是, ops 栈顶为<*> ,</> 之一, 且 nums 中的元素比 ops 中的元素

  • C++中Covariant返回值类型详解

    目录 前言 什么是协变返回值类型(Covariant) 协变返回值类型(Covariant)的作用 前言 C++中当子类覆写(override)父类虚函数时,子类函数的返回值类型可以和父类函数的返回值类型不一致吗?先说结论:可以,但当且仅当它们的返回值类型是协变返回值类型(Covariant)时可以.C++中gcc从3.4开始支持这一特性. 什么是协变返回值类型(Covariant) 函数的协变返回值类型指的是子类中的成员函数的返回值类型不必严格等同与该函数所重写的父类中的函数的返回值类型,而可

  • C# WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇C#进阶系列--WebApi接口传参不再困惑:传参详解,这篇博文内容本身很基础,没想到引起很多园友关注,感谢大家的支持.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了下WebApi的传参机制,今天再来看看WebApi里面另一个重要而又基础的知识点:返回值.还是那句话:本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看.

  • Shell中关于处理方法返回值问题详解

    背景 如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.通过shell编程,写一些工具批处理的时候,经常需要自定义函数.更复杂点的情况下,可能有需要返回一个值. 由于在shell的世界中,并不像其他编程语言,它不支持我们所熟悉的方法返回.本文一起总结一下如何优雅的解决返回值问题? 测试程序 我们一般通过$?来获取上一个语句的输出.看一下下面得测试语句: 新建testReturn脚本 returnString(){ return $1 } retur

  • Selenium执行Javascript脚本参数及返回值过程详解

    在Selenium中可以使用drvier.execute_script()来执行Javascript脚本,支持多行语句. 使用Javascript可以实现以下功能: 移除元素隐藏.禁用.只读等限制属性 为元素添加id或高亮样式 页面滚动 富文本框输入(HTML注入) 获取页面信息 使用Javascript参数 在使用Javascript语句时,还可以动态传入参数或元素对象,Javascript语句中使用占位符"argument[n]"来表示取第几个参数,如: js = "ar

  • 利用Python如何生成hash值示例详解

    一.介绍 如果在Python中需要对用户输入的密码或者其他内容进行加密,首选的方法是生成hash值. 在Python中可以利用二个模块来进行: - crypt - hashlib 二.crypt (一)crypt的主要方法和常量 名称 描述 md5(-) 利用md5算法加密 sha1(-) 利用sha1算法加密 sha224(-) 利用sha224算法加密 sha256(-) 利用sha256算法加密 sha384(-) 利用sha384算法加密 sha512(-) 利用sha512算法加密 (

  • Postman动态获取返回值过程详解

    前面我们总结了postman接口依赖获取cookie的方法,奈何今天老大新给的接口是依赖于token的,大家都知道,postman支持的脚本语言是JavaScript,而我对于JavaScript简直就是小白,于是乎,开始一顿在网上搜,奈何网上适合小白的资料少之又少,费了老鼻子劲才把token从返回的response中提取出来,现在总结在这里,方便日后的查阅,同时也为各位小伙伴们提供一个解题的思路. 先大概讲一下我们的业务场景,就是一个充值的接口,需要依赖登录返回的token,我想做的事情就是,

  • Java带返回值的方法的定义和调用详解

    目录 带返回值的方法练习 方法的注意事项 方法注意事项 方法通用格式 带返回值的方法练习 需求: 设计一个方法可以获取两个数的较大值,数据来自于参数 思路: 1. 定义一个方法,用于获取两个数中的较大数 public static int getMax(int a,int b){ } 2.使用分支语句分两种情况对两个数的大小进行处理 if (a>b) { }else{ } 3. 根据题设分别设置两种情况下对应返回值结果 if (a>b) { return a; }else{ return b;

随机推荐