浅谈定义一个PHP函数

吾爱主题 阅读:156 2021-11-16 16:09:00 评论:0
目录
  • 概述
  • 函数参数与它们的数据类型
  • 函数与它们的返回值
  • 可选参数 VS 可空参数

概述

?
1 2 3 4 5 6 <?php function divide( $dividend , $divisor ){      return $dividend / $divisor ; } echo divide(12, 4); echo divide( 'sa' , 'sd' );

这段代码乍一看没毛病,但是如果你向它传递「任意」参数,它就会出问题。

写出好的代码是一个学无止境的过程。让我们来改进我们编写 PHP 函数的方式。 看下上面的代码,想想第二个函数调用那里会发生什么情况? 它会接受你输入的任何参数,并且尝试执行然后抛出一个数学错误。 但是我们怎么才能让一个函数严格接收能使其正确执行的参数呢? 现代的 PHP 解决了这个问题,并且有更多妙法能让你的代码质量更进一层,没有 bug。

函数参数与它们的数据类型

你可以严格控制你的函数,使其只接收让它正确运行的参数。让我们改变上面的函数定义:

?
1 2 3 4 5 6 <?php function divide(int $dividend , int $divisor ){      return $dividend / $divisor ; } echo divide(12, 4); echo divide( 'sa' , 'sd' );

现在,第二次调用这个函数将会抛出一个致命错误,指出其需要的参数必须是整数类型。你可以用不同的方式处理参数。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php // 可选参数 function getName(string $firstName , string $lastName = '' ){      return $firstName . ' ' . $lastName ; } echo getName( 'Muhammad' , 'Nauman' ); // Muhammad Nauman echo getName( 'Adam' ); // Adam function divide(int $dividend , int $divisor = 2){        return $dividend / $divisor ; } echo divide(12, 4); // 3 echo divide(12); // 6 // 仅接收 Request 类的实例参数 $request function getReuestParams(Request $request ){      return $request ->only( 'name' , 'email' ); }

在定义的时候,将可选参数或带默认值的参数作为最后一个参数。

PHP 7.1 也给可迭代数据介绍了一种伪类型。它能接收任何可迭代的数据。

上图是使用了iterable数据类型的函数。

现在通过代码,我们可以控制的更多了,不是吗?没错,确实如此!

函数与它们的返回值

正如你可以控制传递给指定函数的参数类型一样,你也可以控制函数的返回值类型。它能确保你的函数总是返回同一个数据类型,并且不会崩溃。我们改变一下上面的代码:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?php // 可选参数 function getName(string $firstName , string $lastName = '' ) : string {      return $firstName . ' ' . $lastName ; } echo getName( 'Muhammad' , 'Nauman' ); // Muhammad Nauman echo getName( 'Adam' ); // Adam function divide(int $dividend , int $divisor = 2) : int {        return $dividend / $divisor ; } echo divide(12, 4); // 3 echo divide(12); // 6 // 仅接收 Request 类的实例 $request 作为参数 function getReuestParams(Request $request ) : array {      return $request ->only( 'name' , 'email' ); } // 返回 void 类型 $attribute = 2; function changeAttribute(string & $param , $value ) : void {      $param = $value ; } changeAttribute( $attribute , 5); echo $attribute ; // 5

PHP 逐渐引入了这些功能,如:5.1 版引入的数组类型作为参数,5.4 版引入的可调用类型(callable type),以及 7.1 版引入的 void 返回类型等。

可选参数 VS 可空参数

除了可选参数外,你还可以定义可空(nullable)参数,这意味着你可以定义一种可空参数类型。我们来看个例子:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php function nullableParameter(?string $name ) {      return $name ; } echo nullableParameter(null); // 不会返回任何东西 echo nullableParameter( 'Nauman' ); // Nauman echo nullableParameter(); // 致命错误 function nullableParameterWithReturnType(?string $name ) : string {      return $name ; } echo nullableParameter(null); // 致命错误,必须返回 string 类型 echo nullableParameter( 'Nauman' ); // Nauman function nullableReturnType(string $name ) : ?string {      return $name ; } echo nullableParameter(null); // 致命错误,$name 应该是 string 类型 echo nullableParameter( 'Nauman' ); // Nauman

显然,可空参数不是可选参数,你必须传递一个值或者是null。我个人喜欢使用空值作为可选参数,但这取决于你的任务需求。

以上就是浅谈定义一个PHP函数的详细内容,更多关于定义一个PHP函数的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/a609251438/p/11836834.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容