18 – Algo sobre o novo CakePHP 4
Quando você quer alguma coisa, todo o universo conspira para que você realize o seu desejo.
Algumas novidades na próxima versão do CakePHP:
- Removerá todos os métodos deprecateds
- Removerá todos os métodos não-estáticos de Cake\Database\Type e moverá os métodos de instância comuns para um trait.
- Exigirá pelo menos PHP 7.1
- Usa novas características do PHP 7.1
- Implementa a PSR-16 (https://github.com/cakephp/cakephp/issues/9507)
- Suporte para a PSR-15 (https://github.com/cakephp/cakephp/pull/12907)
- Atualização da documentação. Remoção de todos os "prior to..."
- Atualização dos plugins do core
- Publicação de documentação de novos plugins
- A documentação sobre plugins será movida para plugin-docs tools
- Não será compatível com aplicativos da versão 3.x. Antes de atualizar para a versão 4, atualize para a 3.8 e resolva os deprecateds warnings
Exemplo de aviso de código deprecated:
deprecationWarning('TableSchema::columnType() is deprecated. Use TableSchema::setColumnType() or TableSchema::getColumnType() instead.');
Para desabilitar estes avisos, mudar no config/app.php:
'errorLevel' => E_ALL,
por
'errorLevel' => E_ALL & ~E_USER_DEPRECATED,
Para atualizar para a versão 4.0.x execute:
php composer.phar require --update-with-dependencies "cakephp/cakephp:4.0.*"
Consulte
https://book.cakephp.org/4.0/en/appendices/4-0-migration-guide.html
Deprecated no 3.7
Cake\Core\Plugin::load() and loadAll() are deprecated. Instead you should use Application::addPlugin().
Trocar
Plugin::load('Bake');
Por
$this->addPlugin('Bake');
$this->addPlugin('Migrations');
bin/cake plugin load AdminlBr --bootstrap
Gera no src/Application.php (surgiu a partir da versão 3.6):
$this->addPlugin('AdminBr', ['bootstrap' => true]);
Antes da versão 3.6 usava-se
Plugin::load('NomePlugin');
A adicionava-se manualmente no config/bootstrap.php
A partir da versão 3.6 o comando
bin/cake plugin load NomePlugin
Adiciona uma linha não mais em config/bootstrap.php, mas em
src/Application.php
Algo como:
$this->addPlugin('CakeAclBr', ['bootstrap' => true, 'routes' => true]);
// Desabilitar rotas para o plugin ContactManager:
$this->addPlugin(ContactManagerPlugin::class, ['routes' => false]);
Detalhes em
https://book.cakephp.org/4.0/pt/index.html
https://github.com/cakephp/cakephp/wiki/4.0-Roadmap
https://github.com/cakephp/cakephp/wiki/4.1-Roadmap
Comments fornecido por CComment