自分のMVCについては、グローバル変数($_GET
または$_SERVER
)からリクエストURIを読み取る必要があります。リクエストURIの読み方は?
最初に私は$_GET
配列からそれを読むと思った。しかしそれから、私はそれが$_SERVER
配列にも含まれていることを発見しました。
したがって、どのグローバル配列からリクエストURIを読み込むべきか質問したいと思います。
例:と
http://local.mvc/PsrTest/testRequest/123?var=someval
:
URIは、以下の構造を有することができ、コントローラ名として
PsrTest
。testRequest
をアクション名とします。123
コントローラアクションの引数として。var=someval
いくつかのクエリ文字列のキーと値のペア。 ".htaccessファイル" にRewriteRule
を適用することにより
、それに翻訳される。
http://local.mvc/index.php?url=PsrTest/testRequest/123&var=someval
それは$_GET
と$_SERVER
アレイの次の項目に保存されます:
------------
$_GET array:
------------
'url' => 'PsrTest/testRequest/123'
'var' => 'someval'
---------------
$_SERVER array:
---------------
'HTTP_REFERER' => 'http://local.mvc/PsrTest/testRequest/123?var=someval'
'REDIRECT_QUERY_STRING' => 'url=PsrTest%2ftestRequest%2f123&var=someval'
'REDIRECT_URL' => '/PsrTest/testRequest/123'
'QUERY_STRING' => 'url=PsrTest%2ftestRequest%2f123&var=someval'
'REQUEST_URI' => '/PsrTest/testRequest/123?var=someval'
ありがとうございました!
しないでください。ルーティングはPHPのままにしておいてください。すべてのWebサーバが.htaccessファイル(nginxやlighttpdなど)を持っているようなものではありません。 –
私はこれに同意します。アノテーションを使用してこのメソッドを使用するには.htaccessを使用するのが最善の方法です。 Symfony MVCはこれを非常にうまく行います。独自のMVCを構築する場合は、このコードに参加して自分で使用することができます。 https://symfony.com/doc/current/routing.html –
こんにちは、@tereškoとありがとう!つまり、私は 'RewriteRule'を適用すべきではありませんか?または、他の何か?あなたのアドバイスの背後にあるアイデアを理解するために少し説明してください。実際には、もっと言葉を置くことができる答えを高く評価しています。私のMVCでは、要求されたURIを構築し、それと 'ServerRequestInterface'(PSR-7)を実装し、コントローラアクションを呼び出す必要があるところです。その後のRewriteCond%{REQUEST_FILENAME} するRewriteCondの%{REQUEST_FILENAMEを} -d -f のRewriteRule^index.phpを[L] ' –