ブログを検索

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 件のコメント:

コメントを投稿

クルマに付けてる第一電波の電動アンテナ基台 K9000 がアンテナ寝たままで起きなくなった💦 幸いなことに起きたまま寝なくなるんじゃなく寝たまま起きないので車庫入れは大丈夫 いつもの無線屋さんで相談したらソッコーで基台の殻割って直してもらえた どうやら接点が腐食して接触不良だっ...