2014-09-11 3 views
0

그래서 동적 인 양의 매개 변수 (사용할 수있는 다른 클래스)를 사용하여 클래스를 만들고 싶습니다. 사이트가 상당히 동적이기 때문에 동적입니다. 새 클래스/플러그인을 추가하면 기본 클래스에서 사용할 수 있기를 바랍니다.PHP에서 ReflectionClass를 사용하면 전달 된 매개 변수를 생성자에서 어떻게 사용합니까?

$extra_classes
$my_class = 'pages'; 
$my_parameters = array($class_mysql, $class_functions, $class_forms2); 
$my_parameters = array_merge($my_parameters, $extra_classes); 

$reflection = new ReflectionClass($my_class); 
$class_pages = $reflection->newInstanceArgs($my_parameters); 

내가 내 페이지 클래스를 사용할 수 있도록하려면 모든 활성 플러그인의 클래스 인스턴스로 생성 된 배열입니다 :

이 클래스를 만드는 내 코드입니다.

이것은 모두 정상적으로 작동하지만 현재 클래스 파일에서 수행해야 할 작업이 손실되었습니다. 여기에 내가 원래 가지고 있었던 것이있다 :

전달 된 동적 매개 변수를 어떻게 처리합니까? 나는 찾고 있었지만 나에게 의미있는 것을 찾을 수 없었다. ReflectionClass의 PHP 페이지조차도 클래스 인스턴스를 만드는 것을 멈추고 클래스 자체에 매개 변수를 사용하는 예제는 없습니다. 이 일을 제대로하고 있습니까?

답변

0

좋아, 나는 내 자신의 질문에 대답 할 수있어 잘 모르겠어요 ...하지만 여기에 내가 생각 해낸거야 시간 정도 인터넷 검색 및이가하는 func_get_args()

class pages { 

    protected $classes = array(); 

    public function __construct() { 
     if (func_num_args() > 0) { 
      $args = func_get_args(); 
      foreach ($args as $key => $value) { 
       $this->classes[get_class($value)] = $value; 
      } 
     } 
    } 

} 

에 걸림돌 후 내가해야 할 일. pages에 사용할 수있는 클래스를 확인하려면 $classes을 확인하고 $this->classes['classname']을 사용하여 해당 클래스를 사용할 수 있습니다.

이것이 올바른 방법인지 알 수 없으므로 아무도 알려 주시지 마십시오. 감사!

+0

배열을 인수로 사용하는 경우 배열로 인수를 명시 적으로 전달하지 않는 이유는 무엇입니까? '새 페이지 ($ myParameters)','function __construct (array $ params) ..' – deceze

+0

@deceze 네 말이 맞아 ... 너무 길어. ReflectionClass를 전혀 사용할 이유가 없습니다. 그것을 제거, 감사합니다! – clearmend

+0

나는 제어 *와 * 종속성 주입 *을 당신이 google해야만하는 것으로 언급하고 싶다. 궁극적으로 당신의 인생을 더 쉽게 만들어 줄 것이다. –

관련 문제