PHP 프레임 워크에서 왜 "경로"개념이 사용됩니까?


31

내가 묻는 이유는 PHP 스크립트가 경로가 아니기 때문입니까? 예를 들어, article.php가있는 경우 경로는 단순히 http://mysite.com/article.php 입니다.

라우트가 이미 간단한 파일로 존재할 때 라우트 개념을 더 추상화해야하는 이유는 무엇입니까?

답변:


44

라우터의 기능을 이해하려면 먼저 다시 쓰기 엔진이 무엇인지 이해해야합니다. 로부터 위키 백과 문서 (강조 광산) :

재 작성 엔진은 웹 URL의 모양을 수정하는 소프트웨어입니다 (URL 재 작성). 재 작성된 URL (짧은, 멋진 URL 또는 검색 엔진 친화적 인-SEF라고도 함)은 웹 페이지에 대한 더 짧고 관련성이 높은 링크를 제공하는 데 사용됩니다. 이 기술은 웹 페이지를 생성하는 데 사용되는 파일과 월드에 표시되는 URL을 어느 정도 분리합니다 .

다시 쓰기 엔진을 사용하면 URL과 PHP 스크립트간에 1 : 1 상관 관계가 없습니다. 같은 기사의 예 :

http://example.com/wiki/index.php?title=Page_title

다음과 같이 다시 작성할 수 있습니다.

http://example.com/wiki/Page_title

이 기술을 사용하면 여러 가지 이점 이 있습니다 . PHP는 일반적으로 Apache와 밀접하게 연결되어 있기 때문에 가장 일반적으로 사용되는 재 작성 엔진은 Apache의 mod_rewrite 입니다.

URL을 다시 쓰려면 라우팅은 URL을 가져 와서 구성 요소로 나누고 호출 할 실제 스크립트를 결정하는 프로세스이므로 일종의 라우팅이 필요합니다. 표준 라우터에 대한 설명서 페이지 젠드 프레임 워크의 프로세스 등을 설명합니다 :

라우팅은 URI 엔드 포인트 (기본 URL 다음에 오는 URI의 일부)를 가져와 매개 변수로 분해하여 요청을 수신해야하는 해당 컨트롤러의 모듈, 컨트롤러 및 조치를 판별하는 프로세스입니다.

대부분의 PHP 프레임 워크는 요즘 기반으로 MVC 패턴 및 MVC 프레임 워크 과정은 다음과 같이 간다 *를 :

  1. 브라우저가 URL을 가리키고
  2. 웹 서버는 요청을 잡아서 일반적인 진입 점 (일반적으로 index.php스크립트,
  3. index.php URL을 가져와 라우팅 프로세스를 시작합니다.
  4. URL은 매개 변수로 분해됩니다. 첫 번째는 컨트롤러이고, 두 번째는 동작 방법이며 나머지는 동적 매개 변수로 간주됩니다.
  5. 첫 번째 매개 변수와 일치하는 컨트롤러 클래스가 존재하면 컨트롤러 객체가 인스턴스화됩니다.
  6. 일반적으로 컨트롤러 객체의 함수 인 액션 메소드가 호출되고 그 리턴은 실제로 브라우저로 리턴됩니다.

컨트롤러 및 메소드에 매개 변수를 일치시키는 것은 일반적 으로 정규식 을 통한 일치를 사용 하여 경로라고하는 복잡하고 동적 인 라우팅 패턴을 처리 할 수 ​​있습니다. 라우트의 좋은 예는 CodeIgniter의 URI 라우팅 문서 페이지에서 찾을 수 있습니다 .

$ route [ 'journals'] = "블로그";

$ route [ 'blog / joe'] = "블로그 / 사용자 / 34";

$ route [ 'product / (: any)'] = "카탈로그 / product_lookup";

$ route [ 'product / (: num)'] = "카탈로그 / product_lookup_by_id / $ 1";

$route배열 키로 패턴의 값으로 생성 된 작업 보유 controller/action_method/dynamic_parameter형식.

* 이것은 정식 프로세스에 대한 설명이 아니라 지나치게 단순화 된 설명입니다.


15
"dispatch"의 파생물을 사용하지 않고 mvc 라우터를 설명하는 배지가 있어야합니다.
yannis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.