У меня есть определенный класс, который имеет несколько констант, определенных через `const FIRST = 'something';
Я создал экземпляр класса как $class = new MyClass()
то у меня есть другой класс, который принимает экземпляр MyClass
как один из его конструкторов и сохраняет его как $this->model = $myClassInstance;
Это прекрасно работает.
Но мне интересно, как я могу получить доступ к константам из этого экземпляра?
Я попробовал case $this->model::STATE_PROCESSING
но моя IDE подсказывает мне
Неправильный доступ к статическому члену класса.
и PHP говорит мне
неожиданный '::' (T_PAAMAYIM_NEKUDOTAYIM) в …
Я знаю, что могу делать MyClass::STATE_PROCESSING
но мне интересно, есть ли способ получить их на основе экземпляра?
Кажется, что вы на старой версии 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» для доступа к константе. Точно так же вы можете получить доступ к частным переменным извне.
См. Документы констант класса ООП: http://php.net/manual/en/language.oop5.constants.php