今、先月の末日を取得するというのを PHP(バージョン7.3.5)で書いてて
$last_month_last_day = $day->modify('last day of last month')->format('Y-m-d 23:59:59');
この行 ↑ が LINTチェックでは問題ないけど実行すると下記のエラーになる・・・
Fatal error: Uncaught Error: Call to a member function format() on bool in XXX.php
何度見ても間違っていないので5分くらい経ったころ、PHPの不具合を疑い始めた・・・
長年の経験から変な話ではありますが、言語の不具合を疑うようになったらそれはプログラムのほうのミスが確定したのとイコールなので安心してバグ探しに専念します。
30歳から筋金入りの老眼なので文字サイズを3センチくらいに拡大してじっくり見てみると・・・
え?まさか・・・これ?これなの?うそー!
PHP ってお気楽お手軽言語だと思ってたのに変なところがシビア!
そもそも LINTチェックの意味分かってないだろ PHP 笑
ま、それが PHP らしさかも 笑
× $last_month_last_day = $day->modify('last day of last month')->format('Y-m-d 23:59:59');
〇 $last_month_last_day = $day->modify('last day of last month')->format('Y-m-d 23:59:59');
前後の行との体裁を整えるため last と day の間に半角空白 2文字を入れてたのが許されなかったのでした
last と day の間の空白は半角1文字でなければならないぽい 笑
ここでは書いていないけど first day の記述でも同様だった
インタプリタ系の言語で実行速度を得るにはこうしたアプローチはあるんだろうけど PHP って記述のゆるさが特徴みたいなもので突然のこれの遭遇にビビった次第です。
これだけは譲れないみたいなすごいな PHP 笑
別の環境の PHP 5.5.14 で試したところやはり同様の結果になりましたので仕様なんでしょうね。
へえー
0 件のコメント:
コメントを投稿