LoginSignup
7
3

More than 5 years have passed since last update.

Laravelでimmutableな日付の話

Last updated at Posted at 2018-05-30

PHPユーザーズ(slack)の#laravelチャンネル眺めていたら、Chronosって日付を扱うライブラリの話題が出てて
少し調べてみました。

CarbonとChronosの違い

Carbonはmutable(変更可能)で、DateTimeを継承。

Chronosはimmutable(変更不可)で、DateTimeImmutableを継承。CakePHPのプラグインとして提供されているが依存しないので単体で利用可。

そもそもimmutableとは

端的に言えば、インスタンス生成時の状態から値を変えられない。
状態を変化させる場合には、新たなインスタンスを生成する(広義や狭義によっては変わりそうだけど)。

なにが嬉しいか

状態が変化しないので、コード作成がシンプルになる。
データが誤って更新されることが無いので、不具合が発生し辛いとか。

Laravelではどうなっているか

最新のバージョン(5.6)では日付の操作にはCarbonが利用されている。

昨年、Carbonはメンテナス続くか怪しいのでChronos使おうぜと提案。
変更大変だよねとかありつつChronos勢優勢だったのだが、今年頭にCarbonの作者がコミッター追加してメンテナンスするとのコメントが入りtaylor氏がcloseしています。
https://github.com/laravel/ideas/issues/362

で昨日(5/29)、Laravel NewsでChronosおすすめ的な記事が上がってました。
Working with Mutable and Immutable DateTime in PHP

今後どうなるか

どうなるんでしょうね?

個人的には、今から作り始めるプロジェクトではCarbonではなくChronos使っていこうと思っています。

7
3
0

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
7
3