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の関連記事
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でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
その他の「CakePHP5」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。
-
-
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。
-
-
CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。
-
-
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する
VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。
-
-
Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説
CakePHP3で Google Analytics APIからレポートデータを取得する処理の解説。PHPのサンプルソースをCakePHP3で動くように改造。加えて、ディメンションやメトリックスを条件に設定する方法なども。
-
-
CakePHP4で定数の設定と呼び出し方法の解説(defineとConfigure)
CakePHP4で定数を設定、使用する方法を解説。定数定義はdefineとConfigureを使用する方法を解説。また、bootstrap.phpに直接記述する方法と別のファイルにする方法を解説。
-
-
CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。
-
-
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4系、5系のログイン認証の可否のチェック、および、ログインユーザの情報を取得する方法のまとめ。複数の方法があるが手続きが微妙に異なるためまとめてみた。
-
-
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。
-
-
CakePHP 2.3 ログイン、操作履歴、アクセスログ出力
CakePHPでログインや操作履歴などのアクセスログ出力処理を作成します。