我有一个定义的类,它有几个通过`const FIRST ='something'定义的常量;
我已将该类实例化为$class = new MyClass()
然后我有另一个类,它将MyClass
实例作为其构造函数参数之一,并将其存储为$this->model = $myClassInstance;
这很好用。
但我想知道如何从该实例访问常量?
我试过案例$this->model::STATE_PROCESSING
,但我的IDE告诉我
对静态类成员的访问不正确。
和PHP告诉我
意外的'::'(T_PAAMAYIM_NEKUDOTAYIM)......
我知道我可以做MyClass::STATE_PROCESSING
,但我想知道是否有办法让他们基于实例?
答案 0 :(得分:2)
好像你的旧版本的PHP? PHP 5.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;
}
}
$Class = new ThisClass();
echo $Class->getFIRST(); //returns: hey
echo $Class::FIRST; //returns: hey; PHP >= 5.3
// Edit: Based on OP's comments
$Class2 = new ThatClass();
$Class2->setModel($Class);
echo $Class2->getModel()->getFIRST(); //returns: hey
echo $Class2->Hailwood(); //returns: hey
基本上,创建一个'getter'函数来访问常量。与外部访问私有变量的方式相同。
请参阅OOP类常量文档:http://php.net/manual/en/language.oop5.constants.php