Php 从存储在另一个类中的实例访问类常量
我定义了一个类,它有几个常量,通过'const FIRST='something'定义 我已将该类实例化为Php 从存储在另一个类中的实例访问类常量,php,oop,class,object,static,Php,Oop,Class,Object,Static,我定义了一个类,它有几个常量,通过'const FIRST='something'定义 我已将该类实例化为$class=new MyClass() 然后我有另一个类,它将一个MyClass实例作为其构造函数参数之一,并将其存储为$this->model=$myClassInstance 这个很好用 但我想知道如何从该实例访问常量 我试过case$this->model::STATE\u PROCESSING,但我的IDE告诉我 对静态类成员的访问不正确 PHP告诉我 意外的“::”(T_PAAM
$class=new MyClass()
然后我有另一个类,它将一个MyClass
实例作为其构造函数参数之一,并将其存储为$this->model=$myClassInstance代码>
这个很好用
但我想知道如何从该实例访问常量
我试过case$this->model::STATE\u PROCESSING
,但我的IDE告诉我
对静态类成员的访问不正确
PHP告诉我
意外的“::”(T_PAAMAYIM_NEKUDOTAYIM)在
我知道我可以做MyClass::STATE\u处理
,但我想知道是否有一种方法可以让它们基于实例 您的应用程序似乎使用的是较旧版本的php?PHP5.3允许以您描述的方式访问常量。。。但是,如果没有这种固有的能力,您可以这样做:
class ThisClass
{
const FIRST = 'hey';
public function getFIRST()
{
return self::FIRST;
}
}
class ThatClass
{
private $model;
public function setModel(ThisClass $model)
{
$this->model = $model;
}
public function getModel()
{
return $this->model;
}
public function Hailwood()
{
$test = $this->model;
return $test::FIRST;
}
}
$ThisObject = new ThisClass();
echo $ThisObject ->getFIRST(); //returns: hey
echo $ThisObject ::FIRST; //returns: hey; PHP >= 5.3
// Edit: Based on OP's comments
$ThatObject= new ThatClass();
$ThatObject->setModel($Class);
echo $ThatObject->getModel()->getFIRST(); //returns: hey
echo $ThatObject->Hailwood(); //returns: hey
基本上,我们创建了一个“getter”函数来访问常量。与外部访问私有变量的方式相同
请参阅OOP类常量文档:是的,可以,但请尝试创建ThatClass
并在ThatClass
中存储对$Class的引用,然后尝试使用该引用访问ThisClass
常量@我根据你的评论编辑了我的答案。过来看。在我的机器上正常工作。让我知道我还能提供什么帮助。尝试替换此行$this->model=$model
使用$this->model::FIRST
这就是问题所在,我需要从类内部访问它,而这正是我的职责所在。@Hailwood我在ThatClass
中创建了一个新函数Hailwood()
,该函数通过首先将$this->model::FIRST
赋值给一个变量来执行$this->model::FIRST
。很奇怪,我不知道那是什么!啊,好吧,如果这行得通,我想我会接受的!