这里常量是在函数内部动态定义的,我无法使用类名访问它,我想通过类名访问它。我在函数中的常量来自 Db,我正在从 db 生成常量,我想用类名访问它们请告诉我如何使用“定义”来使常量或类也可用
我的班级{ 公共函数getsettings(){ 定义('我的常量','值'); } } 回声 MyClass::myconstant;
要myconstant
存在,您需要调用该函数getsettings()
。
此后myconstant
将是一个全局常量,但不会是类的一部分,即MyClass
.
使用以下代码:
class MyClass {
public function getsettings(){
define('myconstant','values');
}
}
$obj=new MyClass;
$obj->getsettings();
echo myconstant;// prints 'values' as you need.
现在,如果您想使用与类名关联的常量,则必须使用-keyword声明常量const
。
但在这种情况下,您必须在声明该常量时为其分配一个静态值。因此,出于您的目的,您不能使用const
,因为您想将从数据库检索到的值动态分配给常量。因此,您必须使用define()
我在回答中已经给出的语法。
为了您的目的,我建议您使用private
带有修饰符的访问说明符static
而不是常量的变量。在这种情况下,您将被允许以特权方式访问或修改它们,即仅从基类内部。
这实际上是OOP的需要,即强调数据的安全性(即在private
访问说明符方面)。
class MyClass {
private static $constant;
public function getsettings(){
//code to access database values...
self::$constant=$database_val; //$database_val is assigned with values from the database
}
public function return_constant()
{
return self::$constant;
}
}
$obj=new MyClass;
$obj->getsettings();
echo $obj->return_constant();