예, 저는 Eval()이 얼마나 무서운 지, 선택의 여지가 없다는 것을 알고 있습니다. 과제를 위해 교수가 그것을 사용하도록 지시했습니다.Eval()을 통한 클래스 호출 멤버 함수
Eval()을 사용할 때 PHP가 클래스의 멤버 함수를 호출하지 못하게하는 이유를 알아 내는데 어려움을 겪고 있습니다. 예를 들어 :
f2f1
을하고 페이지의 나머지 부분은 공백이됩니다 :
$code="class evalTest{
function f1(){
echo 'f1';
f2();
}
function f2(){
echo 'f2';
}
}
$x=new evalTest();
$x->f2();
$x->f1();";
eval($code);
echo 'test';
위의 코드가 인쇄됩니다. Eval()을 통해 함수 내에서 함수를 호출하자마자 PHP 전체 스크립트가 멈춘 것처럼 보입니다. 심지어 마지막 "반향 테스트"; " 인쇄되지 않습니다.
이 기능을 사용하려면 약간의 트릭이 있습니까? 아니면 Eval()의 제한 사항입니까? 다시 말하지만, 가능하다면 Eval()을 사용하지 않을 것이지만, 특별히 사용하도록 지시 받았습니다.
'는 error_reporting (E_ALL) '그 이유를 정확하게 알려줄 것입니다. 그렇게 말하면'eval'을 사용할 때마다 아프리카 어린이가 기아로 죽을 것입니다. –
왜 downvote? 이 질문에 문제가 있습니까? – Starx