Tout d’abord, vérifiez que votre application fonctionne sur la dernière version de CakePHP 3.x.
Note
L’outil de mise à jour ne fonctionne que sur les applications exécutées sur la dernière version de CakePHP 3.x. Vous ne pouvez pas exécuter l’outil de mise à jour après la mise à jour vers CakePHP 4.0.
Une fois que votre application s’exécute sur la dernière version de CakePHP 3.x, activez les avertissements d’obsolescence dans config/app.php:
'Error' => [
'errorLevel' => E_ALL,
]
Maintenant que vous pouvez voir tous les avertissements, assurez-vous qu’ils sont corrigés avant de procéder à la mise à niveau.
Si vous n’utilisez pas PHP 7.2 or higher, vous devrez mettre à jour PHP avant de mettre à jour CakePHP.
Note
CakePHP 4.0 nécessite a minimum of PHP 7.2.
Parce que CakePHP 4 adopte le mode strict et utilise plus de typehinting, il existe de nombreuses modifications incompatibles avec les versions précédentes concernant les signatures de méthode et les renommages de fichiers. Pour accélérer la résolution de ces modifications fastidieuses, il existe un outil CLI de mise à niveau:
Avertissement
La commande file_rename
et les règles de l’outil rector for cakephp40, et phpunit80
sont destinés à être exécutés avant que vous n’effectuiez la mise à jour des
dépendances de votre application vers 4.0. Les règles du recteur cakephp40
ne fonctionneront pas correctement si votre application a déjà ses dépendances mises à jour
vers 4.x ou PHPUnit8.
# Installe l'outil d'upgrade
git clone https://github.com/cakephp/upgrade
cd upgrade
git checkout 4.x
composer install --no-dev
Une fois l’outil de mise à niveau installé, vous pouvez maintenant l’exécuter sur votre application ou votre plugin:
# Renomme les fichiers locaux
bin/cake upgrade file_rename locales <path/to/app>
# Renomme les fichiers de template
bin/cake upgrade file_rename templates <path/to/app>
Une fois que vous avez renommé vos fichiers de template et de traduction, assurez-vous de mettre à jour
les chemins App.paths.locales
et App.paths.templates
(dans /config/app.php) avec les
bonnes valeurs. Si besoin, référez-vous à la [configuration du squelette d’une application](https://github.com/cakephp/app/blob/master/config/app.php)
Ensuite, utilisez la commande rector
pour corriger automatiquement de nombreux appels de méthodes
dépréciés dans CakePHP et PHPUnit. Il est important d’appliquer rector avant la mise à niveau
vos dépendances:
bin/cake upgrade rector --rules phpunit80 <path/to/app/tests>
bin/cake upgrade rector --rules cakephp40 <path/to/app/src>
Vous pouvez également utiliser l’outil de mise à niveau pour appliquer de nouvelles règles de rector pour chaque version mineure de:
# Exécutez les règles du recteur pour la mise à niveau 4.0 -> 4.1.
bin/cake upgrade rector --rules cakephp41 <path/to/app/src>
Après avoir appliqué les refactorisations de rector, mettez à niveau CakePHP et PHPUnit en utilisant les commandes suivantes de composer:
php composer.phar require --dev --update-with-dependencies "phpunit/phpunit:^8.0"
php composer.phar require --update-with-dependencies "cakephp/cakephp:4.0.*"
Ensuite, assurez-vous que votre src/Application.php
a été mis à jour pour avoir les mêmes
signatures de méthodes que celles trouvées dans cakephp/app. vous trouverez la dernière version de
Application.php sur GitHub.
Si vous fournissez une API de type REST, n’oubliez pas d’inclure le
Middleware Body Parser. Enfin, vous devriez envisager de passer aux nouveaux
AuthenticationMiddleware
et AuthorizationMiddleware, si vous utilisez encore
le composant AuthComponent
.