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