2019の1日目がやってきました。今年のCakePHPの大きなトピックとしては、CakeFestが日本で開催されたことではなかったでしょうか。Storyさんなど、CakePHPのコアメンバーの方々が一同した会でした。4.0をざっくり知る記事を展開していきます。Ahead」にて、CakePHPの過去と現在と未来の話をされていました。アイデアの紹介がされました。アナウンスがされました。開発開始が告知され、4.0のRoadmapが紹介されました。PSR-15のサポートをする実装ができたといったツイートがされるなど、進んでいっていました。ついての説明があり、「もうすぐリリースか!」といった温度感を感じる内容となっていました。SAFETYという言葉を使っています。Guideにて確認することができます。https://book.cakephp.org/4/en/appendices/4-0-migration-guide.html大まかな部分として、次のような特徴を持っています。7.2以上をrequirementとしています。7.2以上とすることで、PHPにおける型機能がCakePHPの内部実装においても使えるようになっています。4.0での投票にて決定しました。requireとして定義されています。内部実装において基本的にすべてのPHPファイルで、declare(strict_types=1);を定義し、厳密な型チェックを有効にしています。https://www.php.net/manual/ja/functions.arguments.php#functions.arguments.type-declaration.strict試しに、Routeクラスをピックアップすると、次のように定義されていることがわかります。<?phpdeclare(strict_types=1);https://github.com/cakephp/cakephp/blob/7a4c880bd63ce886dc75cc23f536781a16591f47/src/Routing/Route/Route.php#L2戻り値型宣言PHP7.2以上としたことによって、スカラー型宣言を利用できるので、内部実装において、戻り値の型宣言を多く使用しています。array|boolといったエラーハンドリングがされていたような実装は、nullable型を利用し型宣言をできるようしています。}https://github.com/cakephp/cakephp/blob/0b1361564a8a497aa287fa8acc0357ef3f13197e/src/Routing/Route/Route.php#L426と失敗した場合はfalseを返すような実装は、4.xにて次のようになりました。Roadmapにて、PSR-15やPSR-16対応がされていきました。Recommendationsであり、各種物議を醸しつつも、コミュニティにて影響が大きい勧告です。https://www.php-fig.org/psr/PSR-15は、Middlewareに関連するものですが、4.xに向けて対応がされマージされています。https://github.com/cakephp/cakephp/pull/12907PSR16はCacheに関するものですが、こちらも3.7の段階で対応が完了しています。4.0」にて説明しているので、気になる方はこちらをご覧ください。使用者として気がついたことこれまで、CakePHPの内部にてどういうふうに変わったかという話をしていましたが、実際に使用者側としてどういうことを感じたかという点を、主観でピックアップしていきます。templatesについてtemplatesについてまずディレクトリ構成が変わり、src以下から飛び出し、別途templatesディレクトリができました。2019にて、日本人コアコミッターである@chinpei215さんが解説されていましたが、セキュリティホールに対する対応とのことでした。templates.」にもありますが、テンプレートファイルのデフォルトの拡張子が.ctpから.phpに変更されました。おいて、JsonViewの特殊なビュー変数である_serializeや_jsonOptions、_jsonpが非推奨となりました。そのため、JSONを返すAPIを作る場合に次のようなコードを書くことになったようです。アップデート既存システムの4.0へのバージョンアップは、CakePHP3.8へアップグレードし、PHP7.2以上にバージョンアップしてから4.0にあげるのがベターなようです。それにあたって、様々非推奨になったAPIが存在するので、非推奨機能の利用をすべて排除してから上げる必要があります。実際、昨今の3.xのマイグレーションガイドでは、Deprecationsの告知が非常に多くなっています。Guide逆に言うと、非推奨機能の利用を取り除けば、3.xから4.0にバージョンアップできるということになります。アップデートツールも用意されています。https://github.com/cakephp/upgrade/tree/4.x現在サポート中のバージョン2.xや3.xのバージョンのサポートに関しては次のスケジュールとなっています。2019は、@nojimageさんの記事です。ID」の3つのサービスを運営しています。upLoginユーザーは見つかりませんでした。