PHP定义一个高质量的函数

枕上诗书闲处好,门前风景雨来佳

参数类型

  • 可执行的(PHP 5.4+)

    1
    2
    3
    function foo(callable $callback) {

    }
  • 可迭代的(PHP 7.1+)

    1
    2
    3
    4
    5
    6
    7
    function foo(iterable $data) {
    foreach ($data as $item) {
    dump($item);
    }
    }

    foo([1,2,3]);
  • 接受某一个类的实例

    1
    2
    3
    function getReuestParams(Request $request){
    return $request->only('name', 'email');
    }
  • 数组, 整形, 字符串
    整形

    1
    2
    3
    function foo(int $number) {

    }

    数组

    1
    2
    3
    function foo(array $number) {

    }

    字符串

    1
    2
    3
    function foo(string $number) {

    }

可选参数

通过给定默认值实现

1
2
3
function foo(int $number = 1) {

}

可空参数

1
2
3
4
5
6
7
8
9
<?php
function foo(?string $name)
{
return $name;
}
echo foo(null); // 不会返回任何东西
echo foo('Nauman'); // Nauman
echo foo(); // 致命错误

可空参数不是可选参数,你必须传递一个值或者是 null

指定返回值类型

1
2
3
4
5
6
7
8
9
10
11
12
13
function foo(?string $name) : string
{
return $name;
}
echo foo(null); // 致命错误,必须返回 string 类型
echo foo('Nauman'); // Nauman


// 返回 void 类型
$attribute = 2;
function changeAttribute(string &$param, $value) : void {
$param = $value;
}