我想在函数中使用一些常量,但每次使用self::
引用它们都很费力且难看。有没有办法只是通过名称访问它们而不指定范围?
class My_Class {
const CLASS_CONSTANT = 'test value';
private function my_function(){
// Is there a way to access this without self::
$a = self::CLASS_CONSTANT;
}
}
答案 0 :(得分:1)
一种可能(但很笨重)的方法是使用define()函数。这种方法的唯一问题是它在全局范围内定义变量。
以下是如何使用它:
define ('text', 'Foo Bar?!');
echo text;
将返回:Foo Bar?!
因此,要将其集成到课程中,您可以执行以下操作:
class My_Class{
function __construct(){
define ('CLASS_CONSTANT', 'test value');
}
private function display(){
echo CLASS_CONSTANT;
}
}
$example = new My_Class();
$example->display();
输出:test value
请注意define()是一个函数,因此需要在函数块内部或类外执行。它不能像普通类常量一样轻松地在类的顶部声明。
答案 1 :(得分:1)
您可以使用ReflectionClass
来获取类的所有常量
$oClass = new \ReflectionClass(My_Class::class);
$constants = $oClass->getConstants();
foreach ($constants as $name => $value) {
//to work
}
更多访问:http://php.net/manual/en/reflectionclass.getconstants.php
希望它有所帮助!