This domain may be for sale!
This domain may be for sale!
コネヒトが開発しているママ向けQ&Aアプリ/情報メディア「ママリ」では、CakePHPを開発当初から使用しています。2014年にサービス提供を開始し、今に至るまでにはフレームワークのバージョンアップ対応における苦労、技術的負債の解消などいろいろなことがありました。今回「CakePHP」をテーマにCTO伊藤のインタビューをお届けします。 ママリで使用している技術って?ママリで使用している技術スタックを教えてください。まず、モバイルアプリの技術スタックで言うと、iOSアプリはSwift、AndroidアプリではKotlinを使用しています。Webの技術スタックはフロントエンドではReactをメインで使っていて、バックエンドでは、主にPHPでフレームワークはCakePHPを使用しています。インフラはAWSでECSを用いたDockerコンテナを利用しています。他にも機械学習のシステムではPytho
このエントリは、 コネヒト Advent Calendar 2019 の6日目のエントリです。 qiita.com はじめに 今年7月にコネヒトに入社しまして、5ヶ月ほど経過しました @takoba です。 コネヒトではサーバーサイドの主要言語としてPHPを採用しており、その上で採用しているアプリケーションフレームワークは CakePHP です。一方でぼくは、PHPの経験こそあれど入社するまでCakePHPを触ったことがありませんでした。 このエントリでは、そんなぼくがはじめてCakePHPを触ってみた結果について書き殴ってみます。 前提 @takoba がいままで触れてきたアプリケーションフレームワーク 主要なものは、ざっとこんなかんじです。 Zend Framework(PHP5, v1) CodeIgniter(PHP5, v1) Laravel(PHP7, v5) Ruby on
基盤チームに所属している @okinaka です。 個人的には CakePHP とは長い付き合いで、もう14年以上になります。 BASE の事業においても10年間ずっと支えてくれている大変ありがたい Web フレームワークです。 以前から BASE の多くのコードはまだ古い CakePHP 2 (v2.10.24) 上で動作していることが課題になっています。 CakePHP 自身は順調に開発が継続されていますが、2系から3系へのバージョンアップはなかなか困難で二の足を踏んでいました。 そうこうしているうちに古いバージョンの2系は既に公式でのサポートは切れているうえに PHP 8.0 未サポートの状態です。 さすがにそのまま継続して利用するのは無理があるので、数年前から、より柔軟にシステムを構築するためのアーキテクチャ再設計をすすめています。 その成果は上がってきているのですが、単純なフレー
CakePHPのDICいれよーぜPRがマージされとった🎉🎉 (タイミング的にcakefestに間に合わせたかな?) ちゃんと内容追うぞーーー Add a dependency injection container by markstory · Pull Request #14945 · cakephp/cakephphttps://t.co/GSgNp1WBNR— 今日も誰かのにちようび(おいしい鮭親子丼) (@o0h_) 2020年10月1日 ということがありまして、20201005現在で「4.next」に取り込まれているスティタスです! ※ 現行の4.1のパッチバージョンについてはmasterに向けられるので、 4.nextは「次のマイナーバージョン」である4.2を指します 「CakePHPにDIコンテナが入ったらどんな感じに使われるんだろう?」というのは個人的にかねてより興味範
こんにちは!サーバーサイドエンジニアの @fortkleです! 今回は、先週末に開催されたCakePHPの国際カンファレンスである「CakeFest 2019」に参加してきたのでレポートしたいと思います。 CakeFest 2019 CakeFestはPHPのフレームワークであるCakePHPの国際イベントで、セミナー2日、カンファレンス2日の計4日間に渡って開催されるイベントです。 開催地は事前に投票によって決められており、今回は初めての日本開催となりました。 私は後半のカンファレンスから参加しました。 cakefest.org 会の雰囲気 後半2日間のカンファレンス会場はSmartNewsさんのオフィス 公式発表はないのであくまで推測になりますが、全体でいうと100名弱ほど、そのうち半分ほどが海外からの参加者という風に非常に国際色豊かなイベントでした。 このような形式のカンファレンスに
CakePHP Advent Calendar 2019の1日目がやってきました。今年のCakePHPの大きなトピックとしては、CakeFestが日本で開催されたことではなかったでしょうか。CakeFest 2019では、CakePHPのFounderであるLarry Mastersさんや、Lead DeveloperであるMark Storyさんなど、CakePHPのコアメンバーの方々が一同した会でした。そこで、CakeFest 2017に続き、CakePHPの次のメジャーバージョン 4.0 の説明がありました。初日の本日は、そんなCakePHP 4.0をざっくり知る記事を展開していきます。 CakePHP 4.0 のこれまでの経緯 CakeFest 2017で行われたMark Storyのプレゼンテーション「CakePHP - The Road Ahead」にて、CakePHPの過去と
こんにちは、システム部のマルです。 最近、田舎に引っ越して自然に囲まれてコロナで疲れた心を癒しつつあります。 今日は既存システムをReact を使ってリニューアルしたので、振り返ってみたいと思います。 はじめに 今回リニューアルしたのは、外部企業にも提供しているアンケート配信サービスの一部です。 このアンケート配信サービスはマイクロサービス化していて、個々の機能が各々リポジトリに分かれています。 今回はそのうちの一つ、モノリシックなCakePHP で構成されているサービスをリニューアルしました。 既存の構成はCakePHP でview を描画し、バックエンドから適宜DB に直接アクセスしたり、他サーバーに設置されたAPI群を呼び出したりしていました。 これを今回以下のように、フロントエンドからAPI を呼び出す形にリニューアルしました。 フロントエンド: React + Redux バック
管理画面ファイルをBakeで作成 先ほどマイグレーションファイルをbakeで作成しましたが、bakeにはその他のファイルを作成する機能があります。 必要なファイルはModel、Controller、View(template)です。 次のコマンドで生成することができます。 $ bin/cake bake model posts $ bin/cake bake controller posts --prefix admin $ bin/cake bake template posts --prefix admin 実はbakeにはallコマンドがあり、これを実行すれば全てのファイルを生成できるのですが、今回はデータを編集するのは管理画面だけにしたいので、コントローラーとテンプレートには--prefix adminを付けて、Adminディレクトリに生成するようにしてます。 バリデーションの設定
CakePHP Advent Calender 2019 最終日の記事です。 SREチームの金澤です。 2019/12/16にCakePHP4がリリースされました。 ランサーズでは、CakePHP2.10の現システムをCakePHP3に移行中ですが、 同時に、管理画面のソースを別リポジトリに分割し、 CakePHP4で新規構築するプロジェクトも進めています。 CakePHP3で開発をしていたのですが、 CakePHP4が正式リリースされたので、CakePHP4にmigrateしました。 今回、その手順を記録しておきたいと思います。 composer.jsonのCakePHP4対応 CakePHP4.0にアップグレードするためにcomposer.jsonを修正します。 案の定ですが、単純に "cakephp/cakephp": "^4.0", として、composer updateしても依存
こんにちは。プロダクト開発部の @su-kun1899 です。 今回はママリの CakePHP アプリケーションに Fixture Factories を導入した事例を紹介します。 Fixture Factories とは何か Fixture Factories は、モデルやデータベースに依存するテストコードにおいて、テーブルの作成やデータ初期化を行うためのプラグインです。 github.com CakePHP には元々 Fixture という仕組みが提供されていますが、 Fixture Factories はより柔軟に扱うことができます。 https://book.cakephp.org/4/en/development/testing.html#test-fixtures 導入したきっかけ アプリケーションの規模が大きくなり、機能が増えてくると、テーブル(モデル)ごとに一律データを管理
iroha Tech Note 備忘録です。HTML5/JS、Electron(旧Atom-Shell), NW.js(旧node-webkit)、Adobe AIR/Flex、標準化の話などを中心に、日々学んだことを書いていきます。 フレームワークのアップグレードは、しばしば開発者にとって頭の痛い問題となっています。今回は恐らく多くの組織で課題となっていると思われる CakePHP2 から CakePHP4 へ移行について取り上げてみたいと思います。 小規模かつCakePHP2版のソースのメンテナンスの継続を前提としたソフトウェアを移行対象としており、他のシステムの移行に対してはあまり参考にならない可能性があります。またビヘイビア、コンポーネント、ヘルパー、プラグイン、シェル、テストは移行対象としていません。記載しているコードは事前調査のために独自に作成したもので、動作を保証するものでは
#はじめに# CakePHP(3.8)のバリデーションメソッドまとめです。 バリデーションの基本は、Validationクラスのインスタンスに、チェーンメソッドで適応したルールを記述していきます。 use Cake\Validation\Validator; $validator = new Validator(); $validator ->requirePresence('age') ->notEmpty('age', 'このフィールドに入力してください') ->nonNegativeInteger('age', '年齢は数字で入力してください。') Validatorクラスは、基本的にはValidationクラスのラッパーになっています。(例外もあります) そのため、実際にどのような処理が行われるかを知るためには、Validationクラスを覗く必要があります。 public fun
こんにちは!久々の登場となります @takoba_ です!! このエントリは、 コネヒト Advent Calendar 2021 の 8日目 のエントリです。 7日目は @shnagai による 異なるデータソース間の同期がしたくてAWS DMSについて調べたのでまとめてみた でした。 tech.connehito.com CakePHP の Authentication プラグインとは? CakePHP は CakePHP4 がリリースされるタイミングで、認可をする機能を cakephp/authorization プラグインに、認証をする機能を cakephp/authentication プラグインに分離しました*1。これらのプラグインは、実は PSR-7 に準拠した Middleware を提供する Composer パッケージになっていたりします。つまりは、 PHP 界隈にとっ
本記事は CakePHP Advent Calendar 2019 の19日目のエントリーになります。 はじめに 先日、待ちに待ったCakePHP4.0.0が 正式リリース されましたね そして、気が早いのですが4.0系がリリースされたということは、次の大きなアップデートは4.1系のリリースということになります。(本当に気が早くてごめんなさい) そんなこともあり早速 4.1のロードマップ をチラ見してみたのですが Application の欄に以下のような記述があり、何やら面白そうな変化が起きそうだなと感じました。 Experimental support for PSR11 compliant dependency injection container. Potential libraries that we could use are: phpleague/container - h
はじめに 昨年12月に投稿した「CakePHP 4.0.0-RC2 でユーザー認証を実装」では CakePHP Authentication を composer でインストールすることができず、従来からの Auth コンポーネントを使って実装しました。 あれから月日が流れてインストールが可能になりましたので、今回は CakePHP 4 で CakePHP Authentication プラグインを使ってユーザー認証するコードをご紹介します。 GitHub - cakephp/authentication: Authentication plugin for CakePHP. Can also be used in PSR7 based applications. https://github.com/cakephp/authentication 目次 インストール users テーブル
記事作成の背景 Ajaxって聞くけど、、、なんだ?っていうのと、個人的に動的セレクトボックスの ヒントを残しておきたくて作成しました。 なんかパッとする記事が見つけられなかったので、これが少しでも困ってる方の助けになれば幸いです。 環境 CakePHP4 (最新) jQuery MySQL 8.0 全体のコード とりあえずコード見てみるか・・・って方向けに最初に記載しておきます。 勉強会向けに色々書いてありますが、こちらの記事では必要箇所のみ抜粋して記述いたします。 https://github.com/Kurogoma939/cake_ajax_sample.git テストデータ 今回、検証環境はMAMPを用いて開発しました。 そのため、エクスポートしたSQLは以下の通りです。 保存場所 : app/SQL/create_tabel、app/SQL/insert_table CREATE
既存プロダクトのCakePHPのアップグレード戦略 こんにちは。サーバーサイドエンジニアをやっている西中です。 花粉症に悩まされているので最近空気清浄機を購入しました。こころなしか症状が緩和している気がしています。 前回はCakePHP4.3にアップグレードする際に躓きがちなphpunitの変更ポイントをいくつか紹介させていただきました。 実はこのCakePHPのアップグレード対応は段階的に行っていました。 CakePHP段階的なアップグレード対応 私が携わっているこのプロダクトは2018年11月にリリースされました。 リリースした時点ではCakePHPのバージョンは3.6でした。 いきなりCakePHP3.xからCakePHP4に上げてしまうとアップグレード対応の差分が大きくなってしまい、対応に時間がかかってしまうという問題があるため、段階的にアップグレード対応しようという判断になりまし
こんにちは、サーバーサイドやっております 金城 (@o0h_)です。 なんとな〜〜〜くKindleのライブラリを見ていたら、スキエンティアがあって「とても美しくて良い話だなぁ。。。」と思った次第です。 スキエンティア (ビッグコミックススペシャル) 作者: 戸田誠二出版社/メーカー: 小学館発売日: 2014/06/16メディア: Kindle版この商品を含むブログを見る たまに読み返したいな。 さて、掲題のとおりですが、以前にママリのマスプロモーションを実施した際の負荷対策として作成した機構をプラグインとして公開しました。 ・・・という書き出しで以前に書いたのが、CakePHP2.x用のMaster/Replica接続管理プラグインです。 tech.connehito.com それから暫く経ちましたが、この度CakePHP3用の同様のプラグインを公開しました。 packagist.org
CakePHP4でクッキーを使用して、自動ログインを実装しようと思ったところ、CakePHP3.5でクッキーの仕様が大きく変わっていましたので、紹介します。 CakePHP3.4まではCookieComponentを使用していましたが、CakePHP3.5から非推奨になっていました。 公式ドキュメントには以下の記述があるのですが、これがよく分からなかったので、紐解いてみます。 クッキーは、 ServerRequest で利用できます。 クッキー をご覧ください。 クッキーの暗号化は クッキー暗号化ミドルウェア をご覧ください。 https://book.cakephp.org/4/ja/controllers/components/cookie.html本記事ではCakePHP4.1.5を使用しています。 自動ログイン機能の流れログイン時に「ログインしたままにする」というチェックボックスに
こんにちは、はじめまして、お久しぶりです!BASE BANK株式会社にてソフトウェアエンジニアをしている東口(@hgsgtk)です。2019年11月7日(木)〜11月10日(日)に開催されるCakePHPの国際カンファレンス CakeFest 2019 にスピーカーとして参加します。 Hello, Nice to meet you. Long-time no see! I am Kazuki Higashiguchi, a software engineer at BASE BANK, Inc. I am going to participate in CakeFest, CakePHP international conference held from November 7 to November 10, 2019, as a speaker. CakeFestとは / What is
この記事について この記事では、CakePHPを使ったREST APIの作成方法を紹介します。 バックグラウンド、モチベーション 前提に、自分はCakePHPを会社研修レベルでしか学んでいません。しかし、MVCというフレームワークについては、Java Spring、Ruby、Python Djangoの実務経験が2年程あるため、仕組みは理解していました。 モチベーションは、以下2点です。 - REST APIとは何か、作りながら理解したい - 複数言語で1つのアプリを作成してみたい REST APIとは 自分の解釈でAPIを説明すると、以下になります。 「一般のWEBアプリでは、HTTP Request(POST&GET)を投げるとHTMLファイルが返ってくるが、REST APIでは、HTTP Request(POST&GET)を投げて返ってくるのはデータ、主にjson形式。」 つまり、こ
XSSとCSRFの違い表 ■CORS(Cross-Origin Resource Sharing) 追加のHTTPヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組み。 サーバがブラウザに指示するというところがポイント。 ブラウザ側はCORS制約を検知するとエラーの挙動をとる。なのでPostmanのようにhttpリクエストを投げるようなツールはCORS制約を受けない。あくまでCORS制約を受ける場合においてはサーバ側からのレスポンスを読み取らせないというブラウザに備わる機能。 ※深堀り! CORS対策をブラウザがしているのであればCSRFトークンといった対策をサーバ側はする必要ない?と思ってしまうけど、そうじゃない。 先述したようにCORSはあくまでブラウザの挙動。CSRF対
CakePHP 3 を使用して外部のAPIを利用する際の実装方法をまとめました。 2系の時とは実装方法が異なるので、2系でAPIの実装したことがある人は注意が必要です。 実行環境 PHP : 7.1.0 CakePHP : 3.5.XGET リクエストで API を実行する場合Controller に下記の action を追加します。 今回は郵便番号から住所を取得する外部 API を利用します。 Controller の先頭部分に Client をインポートしておきます。 use Cake\Network\Http\Client; public function searchAddress() { $url = 'http://zipcloud.ibsnet.co.jp/api/search'; $data = [ 'zipcode' => $this->request->getQuer
こんにちは。CTOをやっている@itoshoです。コネヒトではここ1ヶ月でiOSDCやAWS Dev Day、PHPカンファレンス、PyCon JPと大きなカンファレンスへの登壇が続いています( ・∀・)イイ!! というわけで、僕も負けじ?と「CakeFest Virtual 2021」に登壇してきたのでその様子をお届けしたいと思います。 CakeFest Virtual 2021とは? CakeFestはPHPのフレームワークであるCakePHPの国際カンファレンスで、今年は昨年に引き続きオンラインで開催されました。構成としては初日にCakePHPのコアメンバーによるワークショップが開催され、2日目にカンファレンス形式で世界各国のエンジニアからの発表が行われました。 イベントの規模は、公式発表ではないので推測になりますが、2日目のカンファレンスは常時100人前後の方が参加していたと思いま
SREチーム、QAチームの金澤です。 昨年より、CakePHP2→CakePHP3の段階的バージョンアップに取り組んできましたが、 バージョンアップ対象をCakePHP3からCakePHP4に変更しました。 CakePHP2→CakePHP4にターゲットを変更する CakePHP3へのバージョンアップを開始したのは、2019/8です。 ※バージョンアップ開始時のブログはこちら。 この時はまだCakePHP4は正式にリリースされていませんでしたが、 CakePHP2→CakePHP4へのジャンプアップできるか調査したところ、 PHPUnitのバージョンが合わず、見送っていました。 CakePHP2で利用できるPHPUnitの最新バージョンはPHPUnit5.7です。 CakePHP3では、PHPUnit5.7が共存できたのですが、 CakePHP4で利用できるPHPUnitの最低バージョンは
🌱 はじめに こんにちは。 自社プロダクト「360(さんろくまる)」を手掛けている技術開発第一部門の みやがわ です。 今日は、昨年2021年からフロントエンド界隈を盛り上げている 高速ビルドツール「Vite」を非SPAな従来のWebアプリに導入してみる、という内容をご紹介します。 タイトル通りバックエンドフレームワークにCakePHPを題材としてあげていますが、 対応方針はどのフレームワークでも変わらないのでLaravelやRailsを使ってる方にも参考になるかと思います。 🌱 内容まとめ MPAでもHMRとホットリロードの恩恵を受けられる✨ CakePHPに導入するためのヘルパーを作ろう✨ フロントエンドの世界はViteに、バックエンドの世界はvite-plugin-live-reloadに頼る✨ 🌱 環境 CakePHP: 4.3 Vite: 2.8.4 vite-plugin
PHPUnitとは PHPUnitとはPHPのユニットテスト用のPHPライブラリであり、 PHPのクラス単位でテストを行う。 PHP Unitはどんなソースコードでもテストできるわけではない。 ある程度テストしやすい設計が求められている。 なるべくクラスは他のクラスと疎結合であるとテストしやすくなる。 PHP Unitを利用するからといって、テスト作業がすべて自動化されるわけではない。 PHP Unitも「テストの原則」則っている。 そのため、テストコードを書かねばならず、時間もかかる。 PHPUnitと手動テストは互いに得意、不得意があるので、 PHPUnitだけに頼るのでなく、場所によっては手動テストを行い、使い分けるのが良い。 PHP Unitのテストコードは複雑にならないようにしなければならない。 何をしているかすぐに分からないテストコードは、開発コストを高くする。 メリット 数値
ルートディレクトリの中で、ルーティングする例:「/」 = トップページ にアクセスした場合、Pagesコントローラのindexアクションに飛ばす。 $routes->connect('/', ['controller' => 'Pages', 'action' => 'index']); $routes->fallbacks(DashedRoute::class); / $routes->connect('パスを書く', ['controller' => 'コントローラ名', 'action' => 'アクション名']);サブディレクトリに対してルーティングする例:admin/posts/viewにアクセスした場合、admin/posts/indexに飛ばす。 サブディレクトリに対してルーティングする場合は、Router::prefixにする。 Router::prefix('admin'
こんにちわ。kyamashitaです。 最近触ってなかったですが、CakePHPが4になっていたので、環境作ってみようと思いました。 前回 はDockerで作りましたが、今回はVirtualBoxのCentOS8に作ってみます。 CentOS8 まずはVirtualBoxにCentOS8を こちら からダウンロードしてインストールします。 初回起動時にアップデートとSELINUXを無効にして再起動します。 # dnf -y update # vim /etc/selinux/config SELINUX=disabled # reboot MariaDB MariaDBをインストールしCake用のデータベースとユーザーを作っておきます。 # dnf -y install mariadb-server mariadb # vim /etc/my.cnf.d/mariadb-server.cn
プログラミング Webシステムを、フロントサイドとサーバーサイドを分けて構築した際、 気にしないといけないのはCORS問題ですよね。 まずはCORSとはなんぞ?という人には話が進まないので意味を引用させていただきます。 オリジン間リソース共有 (CORS) 追加の HTTP ヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。ウェブアプリケーションは、自分とは異なるオリジン (ドメイン、プロトコル、ポート番号) にあるリソースをリクエストするとき、オリジン間 HTTP リクエストを実行します。 https://developer.mozilla.org/ja/docs/Web/HTTP/CORS さて、今回、自社の開発でハマった環境が下記になります。 フロントサイド:l
cake version 3.3.11 cakePHP3で下記のようにフロントとバックエンドでController等を分けたいことありますよね? src/ Controller/ Front/ ItemsController.php ... Admin/ UsersController.php ... Template/ Front/ Items/index.ctp ... Admin/ UsersController.php ... <?php use Cake\Core\Plugin; use Cake\Routing\RouteBuilder; use Cake\Routing\Router; use Cake\Routing\Route\DashedRoute; Router::defaultRouteClass(DashedRoute::class); Router::scope
最近は久々にガッツリPHPのコードを書いているわたなべです。 このところ、仕事でもプライベートでもPHPでAPIを書いて、Next.jsでフロントのWebアプリを書くことがほとんどです。 この場合API仕様は以前ブログにも書きましたが、swagger-phpのアノテーションで記述して、Swagger-UIで参照できる様にしています。 kaz29.hatenablog.com Swagger-UI と swagger-php 最近は使われている方も多いと思いますが、簡単に説明すると、EntityとControllerに以下の様なアノテーションを記述します。 Entity/Article.php /** * Article Entity * * @OA\Schema( * schema="Article", * title="", * description="Article entity",
環境 CentOS6.9 PHP7.2 CakePHP4.1 cakephp/authentication 2.3.0 やりたかったこと 公式の認証チュートリアルでは、 Users テーブルを使って、src/Controller 直下にある UsersController 経由でログインするというもので、これはすぐ出来ました。 今回やりたかったのは、①これを管理者用のログイン機能にするのと、プラス、②認証用のユーザーテーブルを users ではなく、administrators に変えること。 ①はすぐ出来ましたが、②に手こずりました。 時系列:やったこと 前準備:管理者用のURLでログイン出来るようにした これは事前準備で、①をするために、 /admin の prefix がある場合に管理画面で処理する用のルートを追加し、Controller/Admin ディレクトリを作って諸々をそちら
こんにちは。コネヒトという会社で家族向けのサービスをつくったり、CTO業をやったり、インディー開発(個人開発)をしていたりする@itoshoです。 タイトルのママなのですが、半年ほど前からCakeDCという海外の会社で副業をしています。副業自体は以前からちょくちょくやっていたのですが、海外の会社で副業するのは僕自身初めてだったのと、あまり事例も多くないので、こうして発信することで誰かの何かの参考になるといいなと思い、筆を執っています。 ちなみにコネヒト社では副業を許可制という形で認めています(2022年3月時点)。特にソフトウェアエンジニアの場合、副業先での経験が本業で活きることも多いと考えているので、コネヒト側の業務と健康に支障が出なければ、原則OKというスタンスでやっています(ここでのスタンスはCTOである僕のスタンスです)。 そもそもCakeDCとは?CakePHPの生みの親であるL
最近React+TypeScriptばかりで、CakePHPのコードはあまり書いていないわたなべです。 Routingのテスト CakePHP1の頃の新原さんのブログ(なんと2009-05-25の記事、11年前!?)でも書かれているように、routes.phpの設定変更は、思わぬバグを出す可能性があるので、UnitTestでの動作確認は必須だと思っています。 CakePHP3までは、以下のような感じでテストできていましたが、CakePHP4でRoutingがmiddleware化した影響などでそのままでは動作しません。 <?php declare(strict_types=1); ... use Cake\Network\Request; ... public function testRouting($request, $expected) { $request = new Reques
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く