내 응용 프로그램의 나머지 클래스에 액세스하는 곳의 클래스 X가 있습니다. 이 액세스는 동적으로 수행됩니다. 아래의 샘플 코드 (demo here) :PHP에서 객체를 동적으로 생성하는 방법
<?
class ClassX
{
var $ClassA;
var $ClassB;
function __construct()
{
$this->ClassA = new ClassA();
$this->ClassB = new ClassB();
}
}
class ClassA
{
function methodA($param)
{
echo $param;
}
}
class ClassB
{
function methodB($param)
{
echo $param + 1;
}
}
/*I can do this for class A*/
$class = "ClassA";
$method = "methodA";
$param = array("some text");
/*or this for class B*/
//$class = "ClassB";
//$method = "methodB";
//$param = array(5);
$objX = new ClassX();
$chain = $objX->{$class};
call_user_func_array(array($chain, $method), $param);
?>
난에 "붙어"이야 위에 나는 조금 더 갈 수 및 코드에서 X.
내부의 명시 적 객체 인스턴스를 제거하면 나는 생각했다 A와 B
다른 모듈을로드하지만 처음로드되는 모듈을 알지 못하는 응용 프로그램을 빌드하는 방법을 찾고 있습니다. 나는 C 모듈이 내일 경우에 따라서, 나는 더 이상 내가 해봤 X에서이 같은 B.
을 지원하는 경우 같은이 적용되지 않습니다 X를 변경할 필요가 없습니다 :
function __get($object)
{
$this->$object = new $object();
}
을하지만, 잘못된 콜백 오류가 발생하여 call_user_func_array가 테이블에서 벗어난 것 같습니다.
달성하려는 작업을 수행 할 수 있습니까?
해결는 :
Spyric 그것을 못을 박았다! 난 단지
function __get($object)
{
$this->$object = new $object();
return $this->$object;
}
최종 코드 here
너무 가까이에 !! 나는 단지 돌아 오는 것이 필요했다!! 대단히 감사합니다. –