2011-03-24 6 views
0

예를 들어 $_GET에는 id=10, var=100이 포함됩니다. 어떻게 생성자에 추출하고 전달할 수 있습니까? public function __construct($id, $var) 이와 비슷한 것 new Test(extract($_GET));

+1

몇 가지 허용되는 답변을 $ _POST 할 수 있습니다. –

+0

예, 도움이되었거나 정확하다고 대답하면 대답을 수락하십시오. 또한 키와 값 또는 값만 전달 하시겠습니까? –

답변

0

생성자를 __construct ($ array)로 변경하십시오. 그리고 당신이 construtor 내에서 변수를 설정합니다. 그것은 꽤 아니지만 나는 그것을 권하지 않겠지 만 효과가있을 것입니다.

+0

추천 하시겠습니까? – Tuco

1

URL에서 찾고자하는 값이 무엇인지 알 것 같습니까?

PHP에서 $ _GET은 단지 연관 배열입니다. 내 URL은 다음과 같습니다 그렇다면 :

http://example.com/index.php?var1=foo&var2=bar 

난과 같이이 변수를 얻을 수 있습니다 :

내 URL 표시 줄을 변경 저를 예방하는 안전 장치가 없기 때문에

new Test($_GET['var1'], $_GET['var2']); 

는 $ _GET에주의

http://example.com/index.php?var1=foo&var2=[malicious code] 

그래서 항상 신뢰할 수없는 것으로 취급해야합니다.

+0

그는 키와 값을 생성자에 전달하기를 원합니다. 뿐만 아니라 가치. – Rasika

+0

그건 내가 어떻게 질문을 읽지 않았는가 ... –

0

$_GET은 연관 배열입니다. 따라서 key$_GET에서 가져 와서 변수 이름을 얻을 수 있습니다. 그 값은 분명히 $_GET['key']

3

ReflectionMethodreflection API에서 __construct() 방법의 서명을 확인하십시오.

class MyClass { 
     public function __construct($id, $title, $slug = null) { 
       var_dump($id, $title, $slug); 
     } 
} 

$object = new MyClass(); 

$method = new ReflectionMethod($object, '__construct'); 
$parameters = $method->getParameters(); 

$parametersReflectionParameter 오브젝트의 배열을 포함한다. 그렇지 않다면 당신은 몇 가지 조건을 추가해야 물론

$invokeParameters = array(); 

foreach ($parameters as $parameter) { 
    $value = $_REQUEST[$parameter->getName()]; 

    $invokeParameters[$parameter->getPosition()] = $value; 
} 

$method->invokeArgs($object, $invokeParameters); 

은, 모든 필수 매개 변수 $_REQUEST 내에 존재 여부를 던져 예외를 확인 :

이제 ReflectionMethod::invokeArgs()에 의해 사용되는 매개 변수의 배열을 준비해야

관련 문제