スポンサーリンク

CakePHP4.2→4.3への移行について

日本語の移行ガイドについて

4.3 移行ガイド – 4.x
フィクスチャのアップグレード – 4.x

主に移行作業を行った10月30日時点ではアップグレードツールにcakephp43のルールファイルが見当たらずrectorでの置換は行えませんでした;o;

移行情報をまとめるためブランチを切って作業

自作のプラグインについてfix-cakephp43というブランチを切って作業しました。
公開リポジトリのPRリンクと作業内容はそれぞれ以下の通り。

  • imo-tikuwa/cakephp-soft-delete
    • 論理削除プラグインは主にテストのためのFixtureを移行しました。
    • テストを実施するのにcakephp/migrations配下のMigratorクラスが必要なことがわかったのでrequire-dev側にインストールしました。
    • プラグイン単体をテストする場合親の接続情報は使えない(と思う)ので、どうするのか考えながら直してたところデフォルトのデータベース(sqlite)を参照することが分かったため、sqlite用のスキーマファイルを用意しました。
  • imo-tikuwa/cakephp-operation-logs
    • アクセス集計プラグインはミドルウェアの非推奨とテストのためのFixtureを移行しました。
    • ミドルウェアの非推奨は__invoke(ServerRequestInterface $request, ResponseInterface $response, $next)をprocess(ServerRequestInterface $request, RequestHandlerInterface $handler)に変えるという内容。
    • このプラグイン自体にはテストの実装が出来ていません。が、ミドルウェアという都合上このプラグインをインストールしたシステム内で各コントローラのテストを行うのにoperation_logsテーブルの存在が必要となるため、スキーマファイルを用意しました。
      また、プラグイン内のpost-install-cmdを使用することでスキーマファイルをアプリケーション本体内にコピーする仕組みを作ってみました。
  • imo-tikuwa/cakephp-zipcode-jp
    • 郵便番号を元に住所情報を返すプラグインはroutes.phpの修正のみ実施しました。
    • 非推奨となったRouter::plugin()の使用をやめ、RouteBuilderを使用するようにしました。

その他、composer.jsonでCakePHP本体(cakephp/cakephp)の最小バージョンを4.3とする修正も行いました。試してないですがこれで4.3未満と4.3以上の住み分けも出来たような気がする。

まとめ

今回はFixtureのアップグレードで大きな変更が入って結構大変でした。
ただ、スキーマファイルは自作のbakeプラグイン内でbake実行時に出力しているものがあるため、それを使用することでより良い形のプラグインとして仕上がった感があるような気もします。

タイトルとURLをコピーしました