LoginSignup
0
0

More than 1 year has passed since last update.

Carbon 生成の罠

Posted at

はじめに

何度か php の carbon を利用している際に気付かずに起こしていた事象を、備忘録として記載します。

null を入れて生成

ユーザーの入力等をカーボンに変換する際は、

new Carbon($input)
Carbon::parse($input)

とすることが多いと思いますが、この$inputが空文字、null、空配列、falseなどの場合、生成されるインスタンスの日時は実行時点の日時になります。
入力をCrbonに変換してDBに登録、といった実装を注意せずに行うと、
 null等を入れて生成
   ↓
 実行時点での日付で登録
といったコンボがエラーが起きずに発生し、後で入力していないのに日付が入っているといった事態になります。

対策

is_null()を用いてnullかどうかを判定するのも良いですが、空文字、空配列、false の回避も考えると、empty()の方が広範な判定を行うことができます。

大まかな構文としては以下の通りです。

$datetime = empty($input) ? null : Carbon::parse($input);
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0