이것은 frontController를 작성한 첫 번째 시도이며 약간의 문제를 해결했습니다.__autoload : Escape ClassName
먼저 내 사이트가 같은 모양을 내가 당신에게 인상을 줄 수 있도록 : 내 브라우저에서 http://mysite.com/test
을 열 때 는, 서버가 GET 매개 변수 $ 컨트롤러 (시험)과의 index.php를 호출합니다. 이 작업은 .htaccess에 의해 수행됩니다. index.php에 $ controller 클래스의 인스턴스가 생성됩니다. 이를 위해 저는 PHP의 __autoload 함수를 사용합니다. 그래서 코드는 다음과 같습니다
$controller = $_GET["controller"];
function __autoload($controller)
{
include("controllers/$controller.php");
if(!class_exists($controller, false))
{
eval
('
class '. $controller . '
{
public function __construct()
{
include("404.html");
exit();
}
}
');
}
}
$application = new $controller;
당신은 당신이 그것을에서 평가() 꼬추를 눈치 챘을 수도에서 제공하는 코드를 보았을 때. $ controller 클래스가 존재하지 않을 때 치명적인 오류를 피하기 위해 이것을 사용하고, 대신에 404를 표시합니다. 여기
그리고
는 재미를 시작합니다 누군가가 들어갈 때이같은 URL이
... 그래서
Fatal error: Class 'ImATroll!:D' not found
질문
Parse error: syntax error, unexpected '!'
그리고있을 것이다 is : 어떻게 c 나는 이것을 붙잡는다? $ 컨트롤러 변수를 클래스 이름에 허용 된 문자 만 포함하는 방법으로 어떻게 탈출 할 수 있습니까?
Google에서 'url validation'에 대한 첫 번째 결과가 표시됩니다. –
http://validator.w3.org/checklink 어떻게 도움이 될까요? 도트는 URL에서 유효하지만 클래스 이름에는 없습니다. – iceteea
음, 첫 번째 결과는 다음과 같습니다. http://phpcentral.com/208-url-validation-in-php.html –