凌晨两点,适合屏幕上跳出一行 Fatal error: Uncaught Error: Call to undefined function,夜里我盯着它看了半分钟,适合居然笑了。夜里白天遇到这个,适合我会骂人;夜里遇到,夜里反而觉得它像个老朋友,适合准时来敲门。夜里PHP 这门语言就是适合这样,白天在工位上被嫌弃,夜里夜里在终端里却格外诚实。适合
为什么说适合夜里看?夜里因为 PHP 的错误信息从不绕弯子。它不像某些语言那样给你一段三行的适合堆栈,再配一句“Something went wrong”。夜里PHP 会直接把文件名、适合行号、函数名甩到你脸上。夜里脑子转得慢,这种直白反而省事。你不需要猜,它已经告诉你了:第 47 行,array_key_exists() 的参数顺序写反了。改完,刷新,页面出来了。那种即时反馈,像深夜泡面,不精致,但管用。
我有个习惯,夜里写 PHP 的时候会把 error_reporting(E_ALL) 打开,display_errors 也设成 On。白天不敢这么干,怕用户看到警告。夜里无所谓,整个屏幕都是我的调试场。有一次我写一个递归函数,忘了加终止条件,PHP 直接给我抛了 Maximum function nesting level of '256' reached。换作别的语言,可能直接段错误,连日志都留不下。PHP 至少让你知道,你把自己绕进去了。
夜里看 PHP 的另一个好处,是能看清那些白天被框架盖住的东西。Laravel 的 Eloquent 用起来很爽,User::find(1) 一行搞定。但夜里你打开 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php,往下翻几百行,看到 find() 最终调用了 whereKey() 再拼 SQL,你会突然明白为什么有些查询慢。不是框架的错,是你从来没在夜里看过它。白天太吵,文档、会议、需求变更,没人给你时间读源码。夜里可以。
还有一件事,PHP 的数组在夜里显得特别顺眼。它既是列表又是字典,array_merge 和 + 操作符的区别,白天你可能随手一写,夜里你会认真试一遍。$a + $b 保留左边的键,array_merge 右边的覆盖左边。这种细节,白天记不住,夜里试一次就忘不掉。我甚至会在终端里开 php -a,交互模式,一行一行敲。没有 IDE 的自动补全,没有类型提示,就靠 var_dump() 看结果。那种原始感,像用螺丝刀修手表,慢,但踏实。
当然,夜里看 PHP 也有代价。三点以后,你会开始怀疑自己为什么还在写 foreach 而不是 array_map。四点,你会觉得 isset() 和 array_key_exists() 的区别是个哲学问题。五点,天亮了,你看着昨晚写的代码,发现 $result = [] 初始化了三次。然后你删掉两行,保存,关掉编辑器。PHP 不会笑你,它只是安静地执行。
所以,如果你夜里睡不着,又不想刷手机,可以打开一个 PHP 文件。不用写什么大项目,就写个 for 循环,打印 1 到 100。看它一行一行输出,像数羊。数到 47 的时候,你可能会想起白天那个没改完的 bug。那就去改。夜里没人催你,PHP 也不催。它只是等着你按下回车。