CakePHP 4.4 est une mise à jour de l’API compatible à partir de la version 4.0. Cette page présente les dépréciations et fonctionnalités ajoutées dans la version 4.4.
Vous pouvez utiliser composer pour mettre à jour vers CakePHP 4.4.0:
php composer.phar require --update-with-dependencies "cakephp/cakephp:^[email protected]"
Note
CakePHP 4.4 nécessite PHP 7.4 ou une version supérieure.
4.4 introduit quelques dépréciations. Toutes ces fonctionnalités continueront d’exister dans les versions 4.x mais seront supprimées dans la version 5.0. Vous pouvez utiliser l”outil de mise à niveau pour automatiser la mise à jour des fonctionnalités obsolètes:
bin/cake upgrade rector --rules cakephp44 <path/to/app/src>
Note
Cela ne met à jour que les changements de CakePHP 4.4. Assurez-vous d’appliquer d’abord les modifications de CakePHP 4.3.
Une nouvelle option de configuration a été ajoutée pour désactiver les dépéréciations chemin par chemin. Cf. Avertissements de dépréciation pour plus d’informations.
La définition de mappings de classes de vue avec RequestHandlerComponent
est dépréciée. Utilisez Négociation de Contenu à la place.
Bien que les changements qui suivent ne changent la signature d’aucune méthode, ils en changent la sémantique ou le comportement.
Router::parseRequest()
lève à présent une BadRequestException
au lieu
d’une InvalidArgumentException
lorsque le client utilise une méthode HTTP
invalide.
Derrière l’API, certains changements sont nécessaires pour avancer. Ils n’affectent généralement pas les tests.
La version minimum requise est montée à PHP 7.4.
bin/cake routes
met maintenant en valeur les collisions dans les templates
de routes.
Controller::viewClasses()
a été ajoutée. Les controllers qui ont besoin de
réaliser une négociation de contenu devraient implémenter cette méthode. Les
classes de vue à proposer dans cette négociation de contenu devront
implémenter la méthode statique contentType()
.
Le pilote SQLite
supporte maintenant les base de données partagées en
mémoire dans PHP8.1+.
Query::expr()
a été ajoutée comme alternative à Query::newExpr()
.
Le builder QueryExpression::case()
supporte maintenant la détection de
type à partir d’expressions passées à then()
et else()
qui
implémentent \Cake\Database\TypedResultInterface
.
Mailer
accepte à présent une configuration autoLayout
qui, lorsqu’elle
est définie à false
, désactive l’auto-layout dans le ViewBuilder
.
BaseApplication::handle()
ajoute désormais tout le temps la $request
dans le conteneur de service.
HttpsEnforcerMiddleware
a désormais une option hsts
qui permet de
configure le header Strict-Transport-Security
.