浅谈定义一个PHP函数

admin3年前PHP教程31
目录
概述函数参数与它们的数据类型函数与它们的返回值可选参数 VS 可空参数
概述
<?php
function divide($dividend, $divisor){
    return $dividend / $divisor;
}
echo divide(12, 4);
echo divide('sa', 'sd');

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

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

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

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


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

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


<?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数据类型的函数。

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

函数与它们的返回值

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


<?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)参数,这意味着你可以定义一种可空参数类型。我们来看个例子:


<?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函数的资料请关注其它相关文章!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

GPU服务器和普通服务器区别租用美国显卡服务器有什么优势

GPU服务器又被称为显卡服务器,是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务。GPU加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转...

如何选择高防服务器和高防CDN?美国高防服务器CC攻击防护?

如何选择高防服务器和高防CDN?安全防御服务网站除了正常的用户访问外,还有一群觊望网站利益的人在暗中观察,寻找网站漏洞,进行扫盘获取数据,或是通过不同方式对企业网站进行大规模访问,导致企业服务器资源无...

显卡服务器用途有哪些美国显卡服务器租用教程

显卡服务器用途有哪些?显卡服务器又称作为GPU服务器,显卡服务器在处理图形处理能力的时候,有着高性能的效率和计算能力,适用于视频、大数据深度学习、大型数据的处理等多种场景。相比普通的服务器,显卡服务器...

香港拨号vps租用有哪些优势

香港拨号vps租用的优势有:1、香港拨号VPS采用操作系统虚拟化技术,能实现软件和硬件的隔离,且能实现服务器维护和更新时零宕机;2、香港拨号VPS拥有独立的服务器的资源,包括驱动器、CPU、内存、硬盘...

如何选择高性能gpu服务器?江西GPU服务器租用教程?

如何选择高性能gpu服务器?当代,无论是生活还是工作,都与网络是分不开的,业余时间,我们喜欢刷刷手机,工作上要与电脑打交道,特别是现在的人工智能领域发展迅速,成为我们生活的另一部分。而这些科技的运作,...

租用浙江杭州高防服务器需要注意什么

如果您计划租用浙江杭州高防服务器,以下是需要注意的几个方面:选择可靠的服务商:选择有良好信誉和口碑的服务商,并确保其提供的高防服务器具有稳定的性能和良好的技术支持。确定您的需求:在租用高防服务器之前,...