PHP 小技巧(一)

曾经我以为 PHP 很简单,但后来发现我错了,不是 PHP 简单,而是 PHP 容易入门;不是 PHP 写不出好代码,而是很多 PHP 程序员只关心如何实现,却不关心如何优雅地实现。

弱类型也有类型

PHP 是弱类型的语言,但不代表没有类型,PHP 会隐式转换类型,你也可以强制转换。

$_GET $_POST 这样的外部变量,初始类型都是字符串。

当判断一个有可能被转换为 FALSE 的变量是否存在时,请使用 isset($foo) 而不是 !$foo。当 $foo 真的不存在时,后者会报 Notice: Undefined variable;当后者的值为 0 空字符串 NULL 等的时候,后者会返回 TRUE

foreach

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

function foo()
{
echo 'a';

return [1, 2, 3];
}

foreach (foo() as $v)
{

}

// 输出 a

据某资深程序员说,在 PHP 4 中,会输出 ‘aaa’,因为每移动一次指针,foo() 都会重新执行一次,但是在 PHP 5 中没有重现。

巧用闭包引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

$foo = 'Hello';

$bar = function ($arg) use (&$foo)
{
$foo .= $arg;
};

$bar(' World.');

echo $foo;

// 输出 Hello World.

$foo = 'foo';

$bar('bar');

// 输出 foobar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$bar = function ($foo) use (&$bar)
{
$foo--;

if ($foo > 5)
{
return $bar($foo);
}

return $foo;
};

echo $bar(10);

// 输出 5

阅后即焚

1
2
3
4
5
6
7
8
9
<?php

$file = '/path/to/file';

readfile($file);

fastcgi_finish_request();

unlink($file);

PHP 小技巧(一)
https://www.sinosky.org/some-tips-of-php-1/
作者
Jat
发布于
2015年10月29日
许可协议