은 내가 CMS MVC의 스타일을 작성 봤는데, 어떻게 평가 악한 알고 말 내가 할어떻게이 동적 데이터를 eval없이 출력 할 수 있습니까?
eval('?>'.($template).'<?');
에서 file_get_contents
를 통해 필요한 다양한 파일에 끌어 템플릿 클래스를 사용했다 PHP가 실제로 코드를 렌더링 할 수 있도록이 데이터를 플러시 할 수 있습니까?
지금까지 템플릿 클래스는 모든 것이로드 된 후에이 작업을 수행합니다. Template 클래스가이 코드를 내 index.php에 변수로 반환 한 다음 실행하기 위해 무언가를 실행 할 수 있습니까?
내가 만난 MVC 스타일 사이트를 코딩하는 모든 예는이 문제를 해결하기 위해 eval을 사용합니다.
관련 추가 질문 - 평가판이 악의적 인 사용자 입력 코드를 실행하는 데 사용될 수 있다는 것을 알고 있지만 다른 기능이 동일한 운명을 겪지는 않을 것이라고 생각합니까? html 엔티티로 사용자 컨텐트를 변환하면이 문제가 해결되지 않습니까?
아마도 내 방법은 결함이 있지만 예는 내가 평가 피할 다른 방법을보고 싶어 해요 이유입니다, 읽어 봤는데 다음과 같습니다.
난 그냥 같은 일을 달성이 조각을 찾을 않았다
function interpolate($string){
foreach ($GLOBALS as $name => $value){
$string = str_replace('$'.$name, $value, $string);
}
$string = preg_replace('/[$]\\w+/', '', $string);
return $string;
}
이 효과적으로 올바른 내용으로 변수를 대체하여 모든 코드를 렌더링합니다.
아마도 디자인에 결함이있는 것 같습니다. 당신이 해결하려고하는 것을 간결하게 설명한다면, 아마 eval은 변화를 피할 수 있습니다. –
나는 James에게 동의한다. 당신이하는 일이 불분명 할뿐만 아니라, 왜 그렇게하고 있는지 불분명하다. – timdev
당신은 여기에 대화의 일부에 관심이있을 수 있습니다 - http://stackoverflow.com/questions/3326446/php-templating-with-custom-tags-is-this-a-legit-use-of-eval –