Fileのアップロードに関する結合テストをどうするか?

概要 Controller のテストにおいて、IntegrationTestTrait(IntegrationTestCase)の get / posts といったメソッドを利用する機会は多いと思います。 この「POST や PUT のリクエスト」において、ファイルアップロード処理についてはどのように扱うべきでしょうか? post()に渡すデータ = リクエストボディとなるデータとは別に、configRequest()によるリクエストコンテキストへのアップロードファイル情報の注入が必要です。
Read more

CakePHP 3.7.2がリリースされたので更新内容を確認

概要 CakePHP3.7.2がリリースされたので、その内容をチェックしてみます。 3.7.1から2週間半振りののアップデートです. 23個のPR/issueがcloseされており、CSやTypeHint、docなどの軽微な修正に加えてbugfixが盛り込まれています。
Read more

Resource Routing

※1人AdventのDay-24です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHPのRouterには、ある名前のリソースに対してRESTfulなアクセスを簡単に提供する機能 resources() があります。 その内部実装がどのようになっているのか、処理を追ってみました。
Read more

ObjectRegistryについて

※1人AdventのDay-23です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 ObjectRegistryというものがあります。 CakePHPで内部的にかなり頻繁に利用されているクラスであり、インスタンス管理の根幹を担っていると言っても過言ではありません。 どんな使われ方をされていて、どんな処理をしているのかを見てみました。
Read more

fixturize: テストの実行速度を大幅に改善させるプラグイン

※1人AdventのDay-22です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 friendsofcake/fixturizeは、CakePHPにおける単体テストの実行速度を大幅に改善させるプラグインです。 MySQL互換RDBMSで利用が可能で、導入は簡単です。 実際の利用方法と
Read more

ORM/Database/Datasourceの棲み分け

※1人AdventのDay-21です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHP3のデータベース周りの処理を追っていくと、「ORM」「Database」「Datasource」という、似た名前のレイヤーが存在することに気づきます。 普段は特に意識することのないこれらの違いは、どこにあるのでしょうか。 気になったので調べてみました。
Read more

CakePHP 3.7.1がリリースされたので更新内容を確認

※1人AdventのDay-19です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHP3.7.1がリリースされたので、その内容をチェックしてみます。 今回は3.7.x系の初アップデートということもあり、コミュニティにおいて発見されたものを中心としたbugfixが多く見られました。
Read more

Behaviorを使うか、Traitにするか

※1人AdventのDay-16です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHP3ではBehaviorを利用することで、Tableクラスにmixinすることができます。また、PHPにはTraitの仕組みがあり、これを利用することで継承を用いずにメソッドやプロパティの再利用を実現することができます。 現時点で考えている、個人的な「どう使い分けるか」というポイントをまとめてみます。
Read more

Entityの`$_accessible`について、もう1度。

※1人AdventのDay-14です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHP3では、データの誤操作を防ぐためEntityの持つプロパティへの代入可否を設定する $_accessible 機構が備わっています。 具体的な利用方法を確認していきたいと思います。
Read more

カスタムファインダーについておさらい

※1人AdventのDay-13です 1人advent(CakePHP中心、PHP開発よもやま) Advent Calendar 2018 - Adventar 概要 CakePHP3で導入された「カスタムファインダー」は、Queryの組み立てを抽象化・パッケージ化する手法です。 よく利用するconditonsの追加やfields、formatResultsなどの手順を一箇所にまとめ、更にメソッドチェーンによるQueryのビルドを可能にします。
Read more