我有一个名字很长的静态类,例如:
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 :(得分: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 :(得分: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
)
答案 2 :(得分:1)
class scwavln extends SomeClassWithAVeryLongName {}
$someArray[scwavln::CONST_ONE][scwavln::CONST_TWO] = 'foobar';