내 MVC에 대해서는 전역 변수 ($_GET
또는 $_SERVER
)에서 요청 URI를 읽어야합니다.요청 URI를 읽는 방법은 무엇입니까?
먼저 $_GET
배열에서 읽는 것으로 생각했습니다. 그러나 그 다음에 나는 배열이 $_SERVER
배열에도 포함되어 있다는 것을 발견했습니다.
그렇다면 요청 URI를 어느 전역 배열에서 읽어야할까요?
예 :
http://local.mvc/PsrTest/testRequest/123?var=someval
와 :가
URI가 다음의 구조를 가질 수
PsrTest
컨트롤러 이름 등을;testRequest
으로 작업 이름;123
컨트롤러 동작의 인수로;var=someval
일부 쿼리 문자열 키/값 쌍;$_GET
및$_SERVER
배열의 다음 항목에http://local.mvc/index.php?url=PsrTest/testRequest/123&var=someval
과 저장됩니다 : "htaccess로"에
RewriteRule
을 적용하여
, 그것은으로 변환됩니다
------------
$_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로 두어야합니다. 모든 웹 서버가 .htaccess 파일 (nginx 및 lighttpd)을 가지고있는 것과는 다릅니다. –
동의합니다. .htaccess를 사용하여 주석을 사용하여이 방법을 사용하는 것이 최선의 방법입니다. Symfony MVC가이를 잘 처리합니다. 자신 만의 MVC를 작성한다면이 코드에 참여하여 스스로 사용할 수 있어야합니다. https://symfony.com/doc/current/routing.html –
안녕하세요, @ tereško 및 감사합니다. 즉,'RewriteRule'을 적용해서는 안됩니다. 또는 다른 것? 조금 설명해 주실 수 있으시겠습니까? 귀하의 조언 뒤에있는 아이디어를 이해할 수 있습니까? 실제로 나는 더 많은 말을 할 수있는 대답을 많이 주셔서 감사합니다. MVC의 경우 요청 된 URI를 만들고 거기에'ServerRequestInterface' (PSR-7)을 구현하고 컨트롤러 액션을 호출해야하는 시점에 있습니다. –