当前位置: 首页 > 后端技术 > PHP

PHP方法的返回值

时间:2023-03-29 18:36:19 PHP

不只是PHP,大多数编程语言的函数或方法都可以使用return来定义方法的返回值。从函数的名字来看,它本身就是一个计算操作。所以,计算总会有结果的。如果你在方法体中处理结果,比如持久化存储,那么这个函数不需要返回任何东西。计算结果要对外使用,此时必须返回计算结果。返回关键字函数testA($a,$b){echo$a+$b;}var_dump(testA(1,2));//空函数testB($a,$b){return$a+$b;}var_dump(testB(1,2));//3functiontestC($a,$b){返回;回声$a+$b;//后面不会执行}var_dump(testC(1,2));//NULL不需要返回或者直接返回;它会返回NULL,return会阻塞方法体中后续代码的执行。如果要返回多个值,只能用数组来组装数据。函数testD($a,$b){返回[$a+$b,$a*$b,];}var_dump(testD(1,2));//[3,2]returnvaluetypedeclaration关于returnvalue这块比较好理解。以下是重头戏。在PHP7的新特性中,返回值声明是一道非常亮眼的风景线。functiontestE($a,$b):bool{if($a+$b==3){返回TRUE;}else{返回NULL;}}var_dump(testE(1,2));//truevar_dump(testE(1.1,2.2));//TypeError:testE()的返回值必须是bool类型,返回null如上例所示,如果返回值不是bool类型,则直接报TypeError。那么定义返回类型声明有什么好处呢?关于PHP方法参数的事情,我们已经介绍了类型声明的好处,这里不再赘述。无论是参数类型声明还是返回值类型声明,都是一样的。函数testF($a,$b):array{return[$a+$b,$a*$b,];}var_dump(testF(1,2));//[3,2]interfaceiA{}classAimplementsiA{}classBextendsA{public$b='callmeB!';}functiontestG():A{returnnewB();}functiontestH():B{返回新的B();}functiontestI():iA{returnnewB();}var_dump(testG());//B实例var_dump(testH());//B实例var_dump(testI());//InstanceofBInstances同样,数组和类类型都可以声明。但除此之外,返回值声明也可以定义void。它的作用其实就是声明返回值为NULL,不能直接写成:NULL,只能用:void来声明。函数testJ():void{echo"testJ";//返回1;}var_dump(testJ());这时候再尝试返回任何return,都会直接报错:Fatalerror:Avoidfunctionmustnotreturnavalue。小结我们可以看到,PHP在不断的发展中,一直在吸取其他语言的优秀特性。显然,加入这些类型声明的目的是为以后的编译器做准备。这也是PHP8的一个重要特性,让我们拭目以待!测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E6%96%B9%E6%B3%95%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC.php参考文档:https://www.php.net/manual/zh...======================================================大家可以搜索【硬核项目经理】