# Notas de upgrade do Yii 2.0.16.1 → 2.0.55 (Task 10)

Fonte: [UPGRADE.md oficial](https://raw.githubusercontent.com/yiisoft/yii2/master/framework/UPGRADE.md). Busca feita no código ativo (sem `vendor/` e sem `modules/operational-old/`, que não é carregado).

| Versão | Nota | Verificação no accia | Veredito |
|---|---|---|---|
| 2.0.16 | `DbSession::$fields` / `writeSession()` sobrescrito | `config/web.php`: `yii\web\DbSession` sem `writeCallback`/`readCallback`; nenhuma classe estende `DbSession`/`Session` | não afeta |
| 2.0.20 | `Query::select` guardado como chave-valor | `grep "->select["` / `->select)`: 0 | não afeta |
| 2.0.28 | `Html::tag()` com atributos booleanos | coberto pelo crawl/capturas (Task 11) | runtime |
| 2.0.32 | `UploadedFile::deleteTempFile()`/`isUploadedFile()` removidos | `grep`: 0 | não afeta |
| 2.0.34/35 | validadores inline: 4º parâmetro, `$this` = model, closures não podem ser `static`; controllers com `init()` precisam de `parent::init()` | `static function` em `when`/`filter`: 0; todos os `init()` de controllers chamam `parent::init()` | não afeta |
| 2.0.36 | `db\Exception::getCode()` retorna string | `getCode() ==/=== <número>`: 0 | não afeta |
| 2.0.37 | DI não resolve referências em arrays | sem `Instance::of` em arrays de config | não afeta |
| 2.0.38 | sessão respeita `session.use_strict_mode` | `php.ini` com `session.use_strict_mode=0` (padrão) nos dois PHPs; sem `openSession`/`writeSession` sobrescritos | não afeta |
| 2.0.40 | sessão valida `authKey` (`getAuthKey`/`validateAuthKey`) | `models/User.php:230-241` retorna `auth_key` e compara com `===`. Em `user_ceon`, só o id `-2` tem `auth_key` vazio (`''`, não `NULL`) e ele tem `status=10`, enquanto `STATUS_ACTIVE=1` (`models/User.php:43`), então não loga pelo formulário. Usuário de validação (id 4) tem `auth_key` de 32 caracteres. | não afeta (login validado no crawl) |
| 2.0.41 | `NumberValidator` rejeita espaços nas pontas | depende de entrada do usuário; coberto pelos fluxos de escrita (Task 12) | runtime |
| 2.0.42 | sem conversão para string em `INTEGER/BIGINT UNSIGNED` | 37 colunas `UNSIGNED`, **todas `int`**. Na 2.0.16 (`vendor/yiisoft/yii2/db/Schema.php:633-634`) `INTEGER UNSIGNED` com `PHP_INT_SIZE=8` já era `integer`. Nenhuma `BIGINT UNSIGNED`. | não afeta |
| 2.0.43 | `Json::encode` `keepObjectType`, `Cache::multiSet` | `grep`: 0 | não afeta |
| 2.0.44 | `PageCache::$cacheHeaders` | `grep PageCache`: 0 | não afeta |
| 2.0.45 | `Inflector::camel2words`, `UniqueValidator`/`ExistValidator` com múltiplos atributos | `Inflector::*`: 0 | não afeta |
| 2.0.46 | `MysqlMutex` | `grep`: 0 | não afeta |
| 2.0.48 | `Controller::select()` (console) | nenhum console controller sobrescreve `select()` | não afeta |
| 2.0.50 | colunas JSON no MariaDB | banco é MySQL 5.7 | não afeta |
| 2.0.51 | `Session::readSession()`/`gcSession()` com tipos de retorno | nenhuma sobrescrita | não afeta |
| 2.0.52/53 | `convertExceptionToError` deprecated; `XCache`/`ZendDataCache` removidos | cache é `FileCache` (`config/web.php`) | não afeta |
| 2.0.55 | parâmetros de `Expression` renomeados; `ActiveForm` sem atraso de 200 ms; `AttributeTypecastBehavior` | sem inspeção de SQL gerado; comportamento de UI coberto pelo crawl | runtime |

## Mudanças de assets trazidas pelo Yii 2.0.55

- `bower-asset/inputmask` 3.3.11 → 5.0.10 (exigido: `^5.0.8`). Afeta `MaskedInput` (cerca de 296 usos), inclusive o **login** (`views/site/login.php:45-55`, máscara `999.999.999-99`, `removeMaskOnSubmit`). O crawler digita o usuário tecla a tecla nos dois ambientes, então o login comprova a máscara.
- `bower-asset/punycode` 1 → 2 (exigido: `^2.2`).
