2017-12-28 30 views
0

클래스 이름이 있으며이 클래스에서 정적 속성을 가져 오기 위해 이름을 사용하고 싶습니다. 물론 클래스 이름을 반복해서 쓰고 싶지는 않습니다. 내가 갈 수있는 건 이것 뿐이야.클래스 이름을 PHP의 정적 속성으로 직접 사용하는 방법

class MyClass 
{ 
    public static $shopClass = 'super\Long\Class\name\I\want\to\have\only\Here'; 

    public function do($classesStaticAttribute){ 

     $shopClass = self::$shopClass; //I would like to avoid this row... 
     $this->doSomeStuff($shopClass::$$classesStaticAttribute); 

    } 
} 

나는 $shopClass = self::$shopClass 행을 방지하고 직접 속성에 액세스 할 수있는 방법이 있습니까? {self::$shopClass}::$$classesStaticAttribute이 작동하지 않습니다.

+0

여기에서 클래스 속성 b에 액세스하려고합니다. y 정적 속성으로 클래스 이름을 사용하여 오른쪽 ?? – kranthi

+0

옙, id do ..... – Charlestone

답변

2

당신은 단순히 당신이 간단하게 사용할 수있는, 즉

use super\Long\Class\name\I\want\to\have\only\Here as Shop; 

class MyClass 
{ 
    public function do($classesStaticAttribute){ 

     $this->doSomeStuff(Shop::$$classesStaticAttribute); 

    } 
} 

또는, 당신은 $shopClass 속성을 외부에서 설정할 수하고 싶은 말은, use을 통해 클래스 기호를 가져올 수

$this->doSomeStuff(constant(self::$shopClass . '::$' . $classesStaticAttribute)); 

참조 http://php.net/manual/function.constant.php

+0

멋지다, 내가 할 수 있다는 것을 잊어 버린다. :) 다른 파일에 'MyClass :: $ shopClass :: $ attribute'와 같은 것이 필요할 경우에만 "작동하지 않을 것" 나는 그 파일에서도'use'를 사용해야 만 할 것입니다.) 그러나 다행스럽게도 지금은 필요 없습니다 :) – Charlestone

+0

@Charlestone 다른 메소드를 추가했습니다 – Phil