2012-01-02 3 views
1

내가 예를 들어, 매우 긴 이름을 가진 정적 클래스를 내 다른 클래스에서PHP 정적 클래스의 이름이 매우 긴 경우 - 더 짧은 포인터를 사용할 수 있습니까?

class SomeClassWithAVeryLongName { 
    const CONST_ONE = 'foo'; 
    const CONST_TWO = 'bar'; 
} 

을, 나는이 상수를 참조 할.

$someArray[SomeClassWithAVeryLongName::CONST_ONE][SomeClassWithAVeryLongName::CONST_TWO] = 'foobar'; 

나는 어떤 종류의 포인터를 사용할 수있는 방법이 있나요 : 문제가 그들의 무리는 내 코드는 매우 자세한 얻을 수 있도록 내가 연관 키로 사용입니까? 다음과 같음 :

// Pseudo code 
$scwavln = 'SomeClassWithAVeryLongName'; 
$someArray[$scwavln::CONST_ONE][$scwavln::CONST_TWO] = 'foobar'; 

나를 위해 작동하지 않는 것 같습니다. 나는 PHP 5.2.6을 사용 중이다.

+0

코드는 훨씬 더 자주 기록보다 읽기입니다 . 따라서 읽을 수있는 코드를 작성해야합니다. '$ scwavln'은 읽을 수 없으므로하지 마십시오. – Gordon

+1

어리석은, 그것은 단지 예일뿐입니다. 실제 클래스 이름은'Facebook_Open_Graph_API'이고'FBAPI'를 사용하고 싶습니다. – Maverick

답변

1
class scwavln extends SomeClassWithAVeryLongName {} 
$someArray[scwavln::CONST_ONE][scwavln::CONST_TWO] = 'foobar'; 
1

글쎄, 특정 문제에 대한 단지 짧은 변수에 상수 값을 할당하고 색인 키로 사용합니다.

그러나
$index1 = SomeClassWithAVeryLongName::CONST_ONE; 
$index2 = SomeClassWithAVeryLongName::CONST_TWO; 

$someArray[$index1][$index2] = 'foo'; 

, 당신은 당신이 PHP 5.3와 함께 할 시도했던 일을 할 수 있습니다

$Uri = '\\My\\Namespaced\\Class'; 

// you see the value of the const 
var_dump($Uri::MY_CONST); 
1
class SomeClassWithAVeryLongName { 
    const CONST_ONE = 'foo'; 
    const CONST_TWO = 'bar'; 
} 


$rfl = new ReflectionClass("SomeClassWithAVeryLongName"); 

$props = $rfl->getConstants(); 

print_r($props); 

Array 
(
    [CONST_ONE] => foo 
    [CONST_TWO] => bar 
) 

http://php.net/manual/en/class.reflectionclass.php