ブログを検索

2021/08/09

データ型もあいまいな PHP ・・・でも厳しい面もあったという話

今、先月の末日を取得するというのを 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 件のコメント:

コメントを投稿

MySQL で SELECT into outfile 出来なくてハマった件

 Windows上の MySQL で SELECT into outfile で CSVファイルをエクスポートしようとしてハマったので残しておく 環境 Windows10 Pro バージョン 1809 MySQL 8.4.0 という環境で SELECT * FROM table1...