docs/internals-ru/bc.md
В патч-релизах вида 2.x.y.Z обратная совместимость строго не нарушается. В минорных релизах вида 2.x.Y мы стараемся избегать несовместимых изменений, но исправлять их приходится.
Подробнее о нумерации версий в Версионирование Yii.
| Сценарий использования | BC? |
|---|---|
| Type hint с интерфейсом | Да |
| Вызов метода интерфейса | Да |
| Реализация интерфейса и... | |
| Реализация метода | Да |
| Добавление аргумента к реализованному методу | Да |
| Добавление значения по умолчанию к аргументу | Да |
| Сценарий использования | BC? |
|---|---|
| Type hint с классом | Да |
| Создание нового экземпляра | Да |
| Наследование класса | Да |
| Доступ к public свойству | Да |
| Вызов public метода | Да |
| Наследование класса и... | |
| Доступ к protected свойству | Да |
| Вызов protected метода | Да |
| Переопределение public свойства | Да |
| Переопределение protected свойства | Да |
| Переопределение public метода | Да |
| Переопределение protected метода | Да |
| Добавление нового свойства | Нет |
| Добавление нового метода | Нет |
| Добавление аргумента к переопределённому методу | Да |
| Добавление значения по умолчанию к аргументу | Да |
| Вызов private метода (через Reflection) | Нет |
| Доступ к private свойству (через Reflection) | Нет |
| Тип изменения | BC? |
|---|---|
| Удаление | Нет |
| Изменение имени или namespace | Нет |
| Добавление родительского интерфейса | Да, если не добавляются новые методы |
| Удаление родительского интерфейса | Нет |
| Методы интерфейса | |
| Добавление метода | Нет |
| Удаление метода | Нет |
| Изменение имени | Нет |
| Перемещение в родительский интерфейс | Да |
| Добавление аргумента без значения по умолчанию | Нет |
| Добавление аргумента со значением по умолчанию | Нет |
| Удаление аргумента | Да (только последних) |
| Добавление значения по умолчанию к аргументу | Нет |
| Удаление значения по умолчанию у аргумента | Нет |
| Добавление type hint к аргументу | Нет |
| Удаление type hint у аргумента | Нет |
| Изменение типа аргумента | Нет |
| Изменение типа возвращаемого значения | Нет |
| Константы | |
| Добавление константы | Да |
| Удаление константы | Нет |
| Изменение значения константы | Да, кроме объектов, которые могут сериализоваться. Обязательно документировать в UPGRADE.md. |
| Тип изменения | BC? |
|---|---|
| Удаление | Нет |
| Сделать final | Нет |
| Сделать abstract | Нет |
| Изменение имени или namespace | Нет |
| Изменение родительского класса | Да, но оригинальный родитель должен остаться предком класса. |
| Добавление интерфейса | Да |
| Удаление интерфейса | Нет |
| Public свойства | |
| Добавление public свойства | Да |
| Удаление public свойства | Нет |
| Сужение видимости | Нет |
| Перемещение в родительский класс | Да |
| Protected свойства | |
| Добавление protected свойства | Да |
| Удаление protected свойства | Нет |
| Сужение видимости | Нет |
| Перемещение в родительский класс | Да |
| Private свойства | |
| Добавление private свойства | Да |
| Удаление private свойства | Да |
| Конструкторы | |
| Удаление конструктора | Нет |
| Сужение видимости public конструктора | Нет |
| Сужение видимости protected конструктора | Нет |
| Перемещение в родительский класс | Да |
| Public методы | |
| Добавление public метода | Да |
| Удаление public метода | Нет |
| Изменение имени | Нет |
| Сужение видимости | Нет |
| Перемещение в родительский класс | Да |
| Добавление аргумента без значения по умолчанию | Нет |
| Добавление аргумента со значением по умолчанию | Нет |
| Удаление аргументов | Да, только последних |
| Добавление значения по умолчанию к аргументу | Нет |
| Удаление значения по умолчанию у аргумента | Нет |
| Добавление type hint к аргументу | Нет |
| Удаление type hint у аргумента | Нет |
| Изменение типа аргумента | Нет |
| Изменение типа возвращаемого значения | Нет |
| Protected методы | |
| Добавление protected метода | Да |
| Удаление protected метода | Нет |
| Изменение имени | Нет |
| Сужение видимости | Нет |
| Перемещение в родительский класс | Да |
| Добавление аргумента без значения по умолчанию | Нет |
| Добавление аргумента со значением по умолчанию | Нет |
| Удаление аргументов | Да, только последних |
| Добавление значения по умолчанию к аргументу | Нет |
| Удаление значения по умолчанию у аргумента | Нет |
| Добавление type hint к аргументу | Нет |
| Удаление type hint у аргумента | Нет |
| Изменение типа аргумента | Нет |
| Изменение типа возвращаемого значения | Нет |
| Private методы | |
| Добавление private метода | Да |
| Удаление private метода | Да |
| Изменение имени | Да |
| Добавление аргумента без значения по умолчанию | Да |
| Добавление аргумента со значением по умолчанию | Да |
| Удаление аргумента | Да |
| Добавление значения по умолчанию к аргументу | Да |
| Удаление значения по умолчанию у аргумента | Да |
| Добавление type hint к аргументу | Да |
| Удаление type hint у аргумента | Да |
| Изменение типа аргумента | Да |
| Изменение типа возвращаемого значения | Да |
| Статические методы | |
| Сделать нестатический статическим | Нет |
| Сделать статический нестатическим | Нет |
| Константы | |
| Добавление константы | Да |
| Удаление константы | Нет |
| Изменение значения константы | Да, кроме объектов, которые могут сериализоваться. Обязательно документировать в UPGRADE.md. |