URL에서 컨트롤 이름을 가져 와서 index.php에서 올바른 컨트롤러와 동적으로 일치 시키려고합니다.PHP 프론트 컨트롤러를 사용한 동적 라우팅
내 응용 프로그램 루트 : /localhost/app/index.php
그래서 기본적으로 내가 home_controller.php을 inlude하려고 /localhost/app/index.php/home를 입력 할 때. 다음은 코드입니다.$parts = array_slice(explode('/',$_SERVER["REQUEST_URI"]),3);
if(file_exists(dirname(__FILE__)."/controllers/".$parts[0].'_controller.php'))
{
include dirname(__FILE__)."/controllers/".$parts[0].'_controller.php';
}
응용 프로그램 루트 깊이는 내가 같은 응용 프로그램 디렉토리를 변경하는 경우 (3)이이 생겼습니다 경우 그것은 잘 작동 로컬 호스트/1 차/2 차/응용 프로그램/index.php에/홈
는 3에 의해 폭발 있기 때문에, $ parts [0]은 더 이상 "home"이 아닙니다. 질문은 컨트롤러 부분을 어떻게보다 효율적으로 감지 할 수 있습니까?
그런데 codeigniter를 사용하고 있습니까? – chris
감사합니다. 나는 CI를 사용하지 않는다. "/"로 폭발 한 후에도 localhost, first, second, app, index.php, home을 갖습니다. 올바른 컨트롤러를 찾기 위해이 배열을 반복하고 싶지 않습니다. 볼 수 있듯이, 효율적이지 않습니다. 또한 URL이 localhost/first/second/app/index.php/home/settings 인 경우 역방향으로 실행하면 어떻게됩니까? 방금 홈 컨트롤러의 설정 기능을 호출하고 싶습니다. @ chris –
Im는 약간의 미친 일을 생각하고 있습니다. 어떤 것이 당신의 최종 게임이 될지도 모르는 것을 위해 잘 작동하지 않을 것입니다. – chris