php小技巧二
2020-11-16 09:27:52 来源:admin 点击:738
判断大小语句
<?php
function compare(int $a, int $b): int
{
if ($a === $b) {
return 0;
}
return $a > $b ? 1 : -1;
}
改写为
<?php
function compare(int $a, int $b): int
{
return $a <=> $b;
}
Null 合并运算符
<?php
$array = ['a' => 0, 'b' => false, 'c' => null, 'd'];
if (is_null($array['c'])) {
$array['c'] = 'c is null';
}
if ($array['d'] === null) {
$array['d'] = 'd is null';
}
改写为
<?php
$array = ['a' => 0, 'b' => false, 'c' => null, 'd'];
$array['c'] ??= 'c is null';
$array['d'] ??= 'd is null';
方法参数变短
方法参数变短的风险时增加了调用的难度,所以注释就很必要了。不过带来的好处时,方法的复用性远甚固定参数。尤其适合重构的场景,比如:之前的方法(N 多的地方调用这个方法)多加一个参数 就可以处理 现在的逻辑 的场景,我想你一定会遇到过,如果没有遇到过,别着急,迟早的事。
<?php
function test(string $a, string $b, string $c, string $d, string $e, array $f, bool $g = false)
{
var_dump($a, $b, $c, $d, $e, $f, $e);
}
改写为
function test(...$args)
{
var_dump($args);
}
// 或者
function test()
{
var_dump(func_get_args());
}
更加优雅的预定义变量
<?php
function test(array $array, bool $printed = false): array
{
$a = '';
$b = [];
$c = false;
$d = 0;
$e = new \stdClass();
// TODO: 处理...
$result = doSomething();
return $result ?: [];
}
改写为
<?php
function test(array $array, bool $printed = false): array
{
[$a, $b, $c, $d, $e] = ['', [], false, 0, new \stdClass()];
// TODO: 处理...
$result = doSomething();
return $result ?: [];
}