A versão 5.1.0 é compatível com a versão 5.0. Ela adiciona novas funcionalidades e introduz novas descontinuações. Qualquer funcionalidade descontinuada na versão 5.x será removida na versão 6.0.0.
- A conexão agora cria drivers de leitura e gravação exclusivos se as chaves
readouwriteestiverem presentes na configuração, independentemente dos valores. - O FormHelper não gera mais atributos
aria-requiredem elementos de entrada que também possuem o atributorequireddefinido. O atributoaria-requiredé redundante nesses elementos e gera avisos de validação HTML. Se você estiver usando o atributoaria-requiredem estilização ou script, precisará atualizar seu aplicativo. - Adicionar associações com nomes duplicados agora gerará exceções. Você pode
usar
$table->associations()->has()para definir associações condicionalmente, se necessário. - Os métodos Text Utility e TextHelper sobre truncamento e comprimento máximo estão usando
um caractere UTF-8 para
ellipsisem vez de caracteres legados.... TableSchema::setColumnType()agora gera uma exceção se a coluna especificada não existir.PluginCollection::addPlugin()agora gera uma exceção se um plugin com o mesmo nome já tiver sido adicionado.TestCase::loadPlugins()agora limpará todos os plugins carregados anteriormente. Portanto, você deve especificar todos os plugins necessários para quaisquer testes subsequentes.- O algoritmo de hash para configurações de
Cacheque usamgroups. Quaisquer chaves terão novos hashes de prefixo de grupo gerados, o que causará falhas de cache. Considere uma implementação incremental para evitar operar em um cache totalmente frio. FormHelper::getFormProtector()agora retornanullalém de seus tipos anteriores. Isso permite que o código de visualização dinâmica seja executado com menos erros e não deve impactar a maioria dos aplicativos.- O valor padrão para
valueSeparatoremTable::findList()agora é um único espaço em vez de;. ErrorLoggeragora usaPsr\Log\LogTrait.Database\QueryCompiler::$_orderedUnionfoi removido.
- A chave de configuração de cache
_cake_core_foi renomeada para_cake_translations_.
Mailer::setMessage()está obsoleto. Seu comportamento é pouco intuitivo e seu uso é muito baixo.
RedisEngineagora suporta a opçãotlsque permite a conexão ao Redis por meio de uma conexão TLS. Você pode usar as opçõesssl_ca,ssl_certessl_keypara definir o contexto TLS para o Redis.
bin/cake plugin listfoi adicionado para listar todos os plugins disponíveis, sua configuração de carregamento e versão.- Argumentos opcionais
Commandagora podem ter um valordefault. BannerHelperfoi adicionado. Este auxiliar de comando pode formatar texto como um banner com fundo colorido e preenchimento.- Estilos padrão adicionais para
info.bg,warning.bg,error.bgesuccess.bgforam adicionados aConsoleOutput.
Arguments::getBooleanOption()eArguments::getMultipleOption()foram adicionados.Arguments::getArgument()agora gerará uma exceção se um nome de argumento desconhecido for fornecido. Isso ajuda a evitar a confusão de nomes de opções/argumentos.
- Os componentes agora podem usar o contêiner DI para ter dependências resolvidas e fornecidas como parâmetros do construtor, assim como Controllers e Comandos.
PluginConfigfoi adicionado. Use esta classe para obter todos os plugins disponíveis, suas configurações de carga e versões.- As funções
toString,toIntetoBoolforam adicionadas. Elas oferecem uma maneira segura de converter dados de requisição ou outras entradas e retornarnullquando a conversão falha. pathCombine()foi adicionado para ajudar a construir caminhos sem se preocupar com barras duplicadas e finais.- Um novo hook
eventsfoi adicionado à classeBaseApplication, bem como à classeBasePlugin. Este hook é a maneira recomendada de registrar ouvintes de eventos globais para sua aplicação. Consulte :ref:`Registrando Ouvintes <registering-event-listeners>`
- Suporte para os tipos
point,linestring,polygonegeometryfoi adicionado. Esses tipos são úteis ao trabalhar com coordenadas geoespaciais ou cartesianas. O suporte ao SQLite usa colunas de texto por baixo dos panos e não possui funções para manipular dados como valores geoespaciais. SelectQuery::__debugInfo()agora inclui a função de conexão para a qual a consulta se destina.SelectQuery::intersect()eSelectQuery::intersectAll()foram adicionados. Esses métodos permitem que consultas usando as conjunçõesINTERSECTeINTERSECT ALLsejam expressas.- Novos recursos de suporte foram adicionados para os recursos
intersect,intersect-alleset-operations-order-by. - A capacidade de buscar registros sem buffer, que existia na versão 4.x, foi restaurada.
Os métodos
SelectQuery::enableBufferedResults(),SelectQuery::disableBufferedResults()eSelectQuery::isBufferedResultsEnabled()foram adicionados novamente.
- Os métodos
RulesChecker::remove(),removeCreate(),removeUpdate()eremoveDelete()foram adicionados. Esses métodos permitem remover regras por nome.
SecurityHeadersMiddleware::setPermissionsPolicy()foi adicionado. Este método adiciona a capacidade de definir valores de cabeçalhopermissions-policy.Clientagora emite os eventosHttpClient.beforeSendeHttpClient.afterSendquando as solicitações são enviadas. Você pode usar esses eventos para executar logs, armazenamento em cache ou coletar telemetria.Http\Server::terminate()foi adicionado. Este método aciona o eventoServer.terminate, que pode ser usado para executar lógica após a resposta ter sido enviada em ambientes fastcgi. Em outros ambientes, o eventoServer.terminateé executado antes do envio da resposta.
Number::formatter()ecurrency()agora aceitam a opçãoroundingModepara substituir a forma como o arredondamento é feito.- As funções
toDateetoDateTimeforam adicionadas. Elas oferecem uma maneira segura de converter dados de solicitação ou outra entrada e retornarnullquando a conversão falhar.
- Definindo a opção
preserveKeysem consultas do localizador de associações. Isso pode ser usado comformatResults()para substituir os resultados do localizador de associações por um array associativo. - Colunas SQLite com nomes contendo
jsonagora podem ser mapeadas paraJsonType. Este é atualmente um recurso opcional que é habilitado definindo o valor de configuraçãoORM.mapJsonTypeForSqlitecomotrueem seu aplicativo.
- O CakePHP e o template do aplicativo foram atualizados para usar o PHPUnit
^10.5.5 || ^11.1.3". - Os métodos
ConnectionHelperagora são todos estáticos. Esta classe não possui estado e seus métodos foram atualizados para serem estáticos. LogTestTraitfoi adicionado. Este novo trait facilita a captura de logs em seus testes e a realização de asserções sobre a presença ou ausência de mensagens de log.IntegrationTestTrait::replaceRequest()foi adicionado.
Hash::insert()eHash::remove()agora aceitam objetosArrayAccessjunto com dadosarray.
Validation::enum()eValidator::enum()foram adicionados. Esses métodos de validação simplificam a validação de valores de enumeração com suporte.Validation::enumOnly()eValidation::enumExcept()foram adicionados para verificar casos específicos e simplificar ainda mais a validação de valores de enumeração com suporte.
- As células de visualização agora emitem eventos em torno de suas ações
Cell.beforeActioneCell.afterAction. NumberHelper::format()agora aceita a opçãoroundingModepara substituir como o arredondamento é feito.
TextHelper::autoLinkUrls()possui opções adicionadas para melhorar a impressão do rótulo do link: *stripProtocol: Removehttp://ehttps://do início do link. Padrão desativado. *maxLength: O comprimento máximo do rótulo do link. Padrão desativado. *ellipsis: A string a ser anexada ao final do rótulo do link. Padrão para a versão UTF8.HtmlHelper::meta()agora pode criar uma meta tag contendo o token CSRF atual usandometa('csrfToken').