Upgrade CakePHP do wersji 4
W tutorialu pokażę krok po kroku jak podnieść wersję CakePHP z 3 do 4. Zanim przystąpimy do upgradu CakePHP trzeba podnieść wersję php, ponieważ CakePHP 4 wymaga wersji php 7.2 lub wyższej.
git clone git://github.com/cakephp/upgrade composer install --no-dev bin/cake upgrade file_rename locales <path/to/app> bin/cake upgrade file_rename templates <path/to/app>Kolejnym krokiem jest ustawienie stałej dla resources w pliku /config/paths.php.
/** * Path to the resources directory. */ define('RESOURCES', ROOT . DS . 'resources' . DS);Następnym krokiem jest zaktualizowanie ścieżek w pliku config/app.php.
return [ 'App' => [ 'paths' => [ 'plugins' => [ROOT . DS . 'plugins' . DS], 'templates' => [ROOT . DS . 'templates' . DS], 'locales' => [RESOURCES . 'locales' . DS], ], ], ];Uruchom polecenie rector, aby automatycznie naprawić wiele przestarzałych wywołań metod.
bin/cake upgrade rector --rules phpunit80 <path/to/app/tests> bin/cake upgrade rector --rules cakephp40 <path/to/app/src>Podnieś wersję CakePHP i PHPUnit następującymi komendami.
composer require --dev --update-with-dependencies "phpunit/phpunit:^8.0" composer require --update-with-dependencies "cakephp/cakephp:4.0.*"Czasem opcja --update-with-dependencies może nie zadziałać. Źródłem problemu są wersje pakietów zależnych. Podmień je w pliku composer.json, a następnie i uruchom komendę upgradującą jeszcze raz.
{ "require": { "php": ">=5.6", "cakephp/cakephp": "3.9.*", "cakephp/migrations": "^3.0.0", // ^2.0.0 to ^3.0.0 "cakephp/plugin-installer": "^1.0", "mobiledetect/mobiledetectlib": "2.*" }, "require-dev": { "cakephp/bake": "^2.0.3", // ^1.9.0 to ^2.0.3 "cakephp/cakephp-codesniffer": "^3.0", "cakephp/debug_kit": "^3.17.0", // ^3.17.0 to ^4.0.0 "josegonzalez/dotenv": "3.*", "phpunit/phpunit": "^5|^6", "psy/psysh": "@stable" } }Warto przeczytać również CakePHP Migration Guide.