# 後方互換性 私たちは `2.x.y.Z` のようなパッチ・リリースにおいては厳密に後方互換性を保持するように努めるとともに、 `2.x.Y` のようなマイナー・リリースにおいても修正が必要となるような後方互換性の無い変更を避けるように努めています。 バージョン番号については [Yii バージョン規約](versions.md) を参照して下さい。 ## 使用 ### インタフェイス ユース・ケース | 後方互換? -------------|---------- インタフェイスのタイプ・ヒント | Yes インタフェイス・メソッドの呼び出し | Yes **インタフェイスの実装における ...** | メソッドの実装 | Yes 実装済みメソッドへの引数の追加 | Yes 引数のデフォルト値の追加 | Yes ### クラス ユース・ケース | 後方互換? -------------|---------- クラスのタイプ・ヒント | Yes 新しいインスタンスの作成 | Yes クラスの拡張 | Yes パブリック・プロパティへのアクセス | Yes パブリック・メソッドの呼び出し | Yes **クラスの拡張における ...** | プロテクト・プロパティへのアクセス | Yes プロテクト・メソッドの呼び出し | Yes パブリック・プロパティのオーバーライド | Yes プロテクト・プロパティのオーバーライド | Yes パブリック・メソッドのオーバーライド | Yes プロテクト・メソッドのオーバーライド | Yes 新しいプロパティの追加 | No 新しいメソッドの追加 | No オーバーライドされたメソッドへの引数の追加 | Yes 引数のデフォルト値の追加 | Yes プライベート・メソッドの呼び出し(リフレクション経由) | No プライベート・プロパティへのアクセス(リフレクション経由) | No ## 開発 ### インタフェイスの変更 変更のタイプ | 後方互換? -------------|---------- 削除 | No 名前または名前空間の変更 | No 親のインタフェイスの追加 | 新しいメソッドが追加されなければ Yes 親のインタフェイスの削除 | No **インタフェイス・メソッド** | メソッドの追加 | No メソッドの削除 | No 名前の変更 | No 親のインタフェイスへの移動 | Yes デフォルト値を持たない引数の追加 | No デフォルト値を持つ引数の追加 | No 引数の削除 | Yes (末尾の一つまたは複数の引数のみ) 引数のデフォルト値の追加 | No 引数のデフォルト値の削除 | No 引数のタイプ・ヒントの追加 | No 引数のタイプ・ヒントの削除 | No 引数の型の変更 | No 戻り値の型の変更 | No **定数** | 定数の追加 | Yes 定数の削除 | No 定数の値の変更 | シリアライズされる可能性のあるオブジェクトを除いて Yes。UPGRADE.md への記載が必須 ### クラス 変更のタイプ | 後方互換? -------------|---------- 削除 | No final への変更 | No abstract への変更 | No 名前または名前空間の変更 | No 親クラスの変更 | Yes ただし元の親クラスは祖先クラス(祖父母クラスなど)として残らなければならない インタフェイスの追加 | Yes インタフェイスの削除 | No **パブリック・プロパティ** | パブリック・プロパティの追加 | Yes パブリック・プロパティの削除 | No 可視性の低減 | No 親クラスへの移動 | Yes **プロテクト・プロパティ** | プロテクト・プロパティの追加 | Yes プロテクト・プロパティの削除 | No 可視性の低減 | No 親クラスへの移動 | Yes **プライベート・プロパティ** | プライベート・プロパティの追加 | Yes プライベート・プロパティの削除 | Yes **コンストラクタ** | コンストラクタの削除 | No パブリック・コンストラクタの可視性低減 | No プロテクト・コンストラクタの可視性低減 | No 親クラスへの移動 | Yes **パブリック・メソッド** | パブリック・メソッドの追加 | Yes パブリック・メソッドの削除 | No 名前の変更 | No 可視性の低減 | No 親クラスへの移動 | Yes デフォルト値を持たない引数の追加 | No デフォルト値を持つ引数の追加 | No 引数の削除 | Yes (末尾の一つまたは複数の引数のみ) 引数のデフォルト値の追加 | No 引数のデフォルト値の削除 | No 引数のタイプ・ヒントの追加 | No 引数のタイプ・ヒントの削除 | No 引数の型の変更 | No 戻り値の型の変更 | No **プロテクト・メソッド** | プロテクト・メソッドの追加 | Yes プロテクト・メソッドの削除 | No 名前の変更 | No 可視性の低減 | No 親クラスへの移動 | Yes デフォルト値を持たない引数の追加 | No デフォルト値を持つ引数の追加 | No 引数の削除 | Yes (末尾の一つまたは複数の引数のみ) 引数のデフォルト値の追加 | No 引数のデフォルト値の削除 | No 引数のタイプ・ヒントの追加 | No 引数のタイプ・ヒントの削除 | No 引数の型の変更 | No 戻り値の型の変更 | No **プライベート・メソッド** | プライベート・メソッドの追加 | Yes プライベート・メソッドの削除 | Yes 名前の変更 | Yes デフォルト値を持たない引数の追加 | Yes デフォルト値を持つ引数の追加 | Yes 引数の削除 | Yes 引数のデフォルト値の追加 | Yes 引数のデフォルト値の削除 | Yes 引数のタイプ・ヒントの追加 | Yes 引数のタイプ・ヒントの削除 | Yes 引数の方の変更 | Yes 戻り値の型の変更 | Yes **スタティック・メソッド** | 非スタティックなメソッドのスタティックへの変更 | No スタティックなメソッドの非スタティックへの変更 | No **定数** | 定数の追加 | Yes 定数の削除 | No 定数の値の変更 | シリアライズされる可能性のあるオブジェクトを除いて Yes。UPGRADE.md への記載が必須