Skip to content

Conversation

@endou-mame
Copy link
Collaborator

@endou-mame endou-mame commented Oct 15, 2025

Fixes #65

変更内容

LocalDate クラスを継承したサブクラスで、年月日の最小値・最大値をオーバーライドできるようにする機能を追加しました。

主な追加機能

  1. オーバーライド可能なメソッドの追加

既存の定数に加え、以下のprotectedメソッドを追加:

  • minYear(): 最小年の取得 (デフォルト: -9999)
  • maxYear(): 最大年の取得 (デフォルト: 9999)
  • minMonth(): 最小月の取得 (デフォルト: 1)
  • maxMonth(): 最大月の取得 (デフォルト: 12)
  • minDay(): 最小日の取得 (デフォルト: 1)
  • maxDay(): 最大日の取得 (デフォルト: 31)
  1. min() メソッドの追加

src/DateTime/LocalDate.php:232に min() メソッドを新規追加し、最小日付のインスタンスを生成できるようにしました。

  1. max() メソッドの改修

src/DateTime/LocalDate.php:227の max() メソッドを、オーバーライド可能なメソッドを使用するように変更しました。

  1. バリデーション処理の改修

isValidYear(), isValidMonth(), isValidDay() の各バリデーションメソッドを、オーバーライドされたmin/maxメソッドの値を参照するように修正しました。

  1. テストの追加

tests/Unit/DateTime/LocalDateTest.php に以下のテストを追加:

  • maxメソッドで正常にインスタンスが作成できる()
  • minメソッドで正常にインスタンスが作成できる()

利用シーン

サブクラスで年月日の範囲を制限したい場合に、これらのメソッドをオーバーライドすることで実現できます。例えば、「2000年以降の日付のみ扱うクラス」などを作成する際に有用です。

@endou-mame endou-mame self-assigned this Oct 15, 2025
@endou-mame endou-mame merged commit c677cb4 into main Oct 15, 2025
1 check passed
@endou-mame endou-mame deleted the endou-mame/issue65 branch October 15, 2025 09:12
@endou-mame endou-mame added this to the v0.7.7 milestone Oct 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LocalDate 値オブジェクトの min/max をオーバーライドできるようにする

1 participant