Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从存储在另一个类中的实例访问类常量_Php_Oop_Class_Object_Static - Fatal编程技术网

Php 从存储在另一个类中的实例访问类常量

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

我定义了一个类,它有几个常量,通过'const FIRST='something'定义

我已将该类实例化为
$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
。很奇怪,我不知道那是什么!啊,好吧,如果这行得通,我想我会接受的!