2017-03-11 7 views
0

PHP의 구문/구문 기능에 대한 질문입니다. 예를 들어 객체 선언시 클래스 이름을 저장하는 변수를 사용하십시오.PHP에서 변수를 사용하는 것처럼 클래스 이름을 유지하기 위해 상수를 사용하여 객체를 선언 하시겠습니까?

define('CLASS_NAME','myClass'); 
$obj = new {CLASS_NAME}; 

이것은 작동하지 않습니다. 분명히 매개 변수를 중개 단계로 사용할 수는 있지만, 형식화 문제인지 또는 이런 방식으로 직접 수행 할 수 없는지 여부를 결정하는 데 주로 도움이됩니다. 클래스 이름 (예를 들어, MyClass)로

+0

이 경우에는'new {CLASS_NAME} '을 사용하여 객체를 생성 할 수 없습니다 – RomanPerekhrest

답변

2

u_mulder says과 같이 PHP에서 의미있는 표현식을 사용할 수 없습니다.

고객 리플렉션을 사용하여 한 줄에 표시하십시오.

$obj = (new ReflectionClass(CLASS_NAME))->newInstance(); 

모든 매개 변수는 newInstance 호출로 이동해야합니다.

이것은 바보 같은 아이디어입니다. 문자열의 클래스 이름에 따라 가변적 인 동작을하는 것은 아마도 잘못된 아키텍처를 의미하기 때문입니다. 하지 마. 그러나 이 가능한지 묻는다면이고 그렇습니다.

+0

실제로 상수를 사용할 수 있는지 여부는 궁금했지만 대체로 사용하지 말아야 할 진술을 백업 할 수 있습니까? 변수 함수를 사용합니까? 그것은 많은 코딩 문제를 단순화합니다. 콜백이나 익명 함수를 인수로 전달할 다른 방법은 무엇입니까? –

+0

@ThoraciusAppotite 함수를 호출하지 않고 변수를 사용하여 클래스를 인스턴스화하는 방법에 대해 설명합니다. 유효한 유스 케이스가 있지만 비교적 드물다. – lonesomeday

1

상수 이름 MyClass 구별 할 수없는 - 당신의 접근 것 하지 작동합니다.