CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
2025/03/23
CakePHP4系、5系でRequestオブジェクトでは取得できないURI情報を取得する方法
「getParam('action')で取得するアクション名は別関数に移動しても不変」
上記の記事で、CakePHP4系、CakePHP5系で実行しているコントローラー、アクション名を取得する方法について解説しました。
「$this->request->getParam('controller')」「$this->request->getParam('action')」は、Requestオブジェクトの情報を取得していますので、アクセスした後のプログラム内での処理によって変化する情報ではありません。
ルーティングの設定によって、アクセスする URLと実行するコントローラー、アクションが異なっていても、実際にアクセスするコントローラー、アクション名が取得されます。
というのが、記事の概要です。
この記事では、「じゃぁ、URL(URI)の方の情報を取得するときはどうするの?」という解説を行います。
CakePHP4系、CakePHP5系で URI情報は関数「getUri()」で取得する
CakePHP4系、CakePHP5系では「getUri()」という関数が用意されています。
この「getUri()」を使用することでアクセスの URI情報を取得することができます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 実行関数 $this->request->getUri(); // 実行結果 Laminas\Diactoros\Uri Object ( [allowedSchemes:protected] => Array ( [http] => 80 [https] => 443 ) [scheme:Laminas\Diactoros\Uri:private] => http [userInfo:Laminas\Diactoros\Uri:private] => [host:Laminas\Diactoros\Uri:private] => example.com [port:Laminas\Diactoros\Uri:private] => 80 [path:Laminas\Diactoros\Uri:private] => /sample/test01/1 [query:Laminas\Diactoros\Uri:private] => aaa=111 [fragment:Laminas\Diactoros\Uri:private] => [uriString:Laminas\Diactoros\Uri:private] => ) |
URI情報を個別に取得する関数も用意されている
上記のように「getUri()」を実行すると、URI情報がまとめて取得できます。
CakePHPでは、これに加え、「getUri()」によって取得した情報を個別に取得する関数も用意されています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// アクセスの URL // http://example.com/sample/test01/1?aaa=111 // 「/sample/test01/1」を取得 $this->request->getUri()->getPath(); // 「80」を取得 $this->request->getUri()->getPort(); // 「aaa=111」を取得 $this->request->getUri()->getQuery(); // 「example.com」を取得 $this->request->getUri()->getHost(); // 「http」を取得 $this->request->getUri()->getScheme(); |
PHPにはURI情報を取得する「$_SERVER」が用意されている
そもそもの話ですが、PHPにはサーバ情報、環境情報は「$_SERVER」に入っていますので、下記のように PHPの標準処理を利用して URIの情報を取得することもできます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// アクセスの URL // http://example.com/sample/test01/1?aaa=111 // 「/users/menu/1?aaa=111」を取得(「getPath()」とは値が異なる) $_SERVER["REQUEST_URI"]; // 「80」を取得 $_SERVER["SERVER_PORT"]; // 「aaa=111」を取得 $_SERVER["REDIRECT_QUERY_STRING"]; // 「example.com」を取得 $_SERVER["SERVER_NAME"]; // 「http」を取得 $_SERVER["REQUEST_SCHEME"]; |
「getPath()」など、取得できる情報が少し異なる場合もありますが、取得できる情報は「$_SERVER」の方が多様ですので、CakePHP独自の「getPath()」を使用する必要があるのか、という疑問はありますね。
PHPオフィシャル $_SERVER
https://www.php.net/manual/ja/reserved.variables.server.php
CakePHP5の関連記事
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法CakePHP4、5のユーザ認証でID、PASS以外の削除フラグなども条件加える方法
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
getParam('action')で取得するアクション名は別関数に移動しても不変CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説
CakePHP4、5のnewEmptyEntityで作成したオブジェクトは空なのか、確認してみた
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
その他の「CakePHP5」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索
CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。
-
-
CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法
CakePHP3に付属しているデバッグのためのツール、デバッグキットを強制的に有効化、無効化する方法を解説。初期設定では開発環境としてありそうなドメインの場合のみ有効になるように設定されている。
-
-
CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説
CakePHP4、5で指定したカラムに特定の値に該当のレコードの有無をチェックするにはexists()を使う。単純にカラムを指定する方法から複数条件をand、orで探すこともできる。
-
-
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。
-
-
CakePHP 2.3 bakeの超初心者向けフォロー講座
CakePHP 2.3 bakeの超初心者向けフォロー講座
-
-
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説
コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。
-
-
CakePHP3で「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」などのエラーが出たときの確認するポイント
CakePHP3の開発で発生する「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」のエラーには特有の原因もあるため、その説明と対処方法の解説。
-
-
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。
-
-
CakePHP3のForm Helperの使い方のまとめ
CakePHP3になりフォームヘルパーの使い方も大きく変わりましたので、使い方をまとめました。基本的な使い方からプラスアルファの便利な使い方まで紹介。
-
-
CakePHP 2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索
CakePHPの検索プラグイン Search Pluginの検索処理の中で前方一致検索、後方一致検索、不等号による検索、between句による範囲検索の解説です。