Files
2018-03-14 23:34:07 +09:00

153 lines
6.1 KiB
Markdown

# 後方互換性
私たちは `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 への記載が必須