2012-05-14 2 views
2

임의의 PHP 질문, 더 많거나 적은 호기심. 이것이 바보 같은 질문이라면 사과드립니다.정의 된 상수를 사용하여 객체 생성

$class = 'ClassName'; 
$object = new $class(); 

또는이 분명히 작동

$object = $class::functionName(); 

.

define(CLASS, 'ClassName'); 
$object = new CLASS(); 

또는

$object = CLASS::functionName(); 

이 작동하지 않습니다.

새 개체를 만들 때 정의 된 상수를 사용하는 것이 가능한지 궁금합니다. 그렇지 않으면, 나는 확실히 이유를 이해합니다.

답변

3

글쎄, 당신은이 작업을 수행 할 수 있습니다

define(MYCLASS, 'ClassName'); 
$class = MYCLASS; 
$object = new $class(); 

을 ...하지만 그 것 때문에 내가 아는 한, 당신은 직접 new MYCLASS()에서와 같이 상수를 사용할 수 없습니다라는 이름의 클래스 물론 모양의 MYCLASS.

사이드 노트 : 대문자 인 경우에도 class 또는 function과 같은 예약어와 충돌하는 이름을 가진 상수를 가질 수 없습니다.

어떤 이유로이 많이하고 있다면 당신이 바보 같은 일을 할 수있는 :

function newClass($str, $args = NULL) { 
    return new $str($args); 
} 
$class = newClass(MYCLASS); 

을 ...하지만 난 정말하지 않는 것이 좋습니다. 나는 또한 당신이 아마 너무 많은 상수를 필요로하지 않는다고 생각하거나, 상수를 전혀 포함하지 않는 당신이하고있는 일을하는 더 우아한 방법이있다.

+0

예. 이전 스크립트에서 현재하고있는 것과 정확히 같습니다. 그냥 물어볼 줄 알았어. 감사! – Brett

관련 문제