2012-01-02 5 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);