Мне нужно получить доступ к константе, которая принадлежит классу, но вместо того, чтобы явно писать имя класса, я хочу получить его непосредственно из объекта. Объект является свойством другого объекта.
$this->fetcher::BASE_URL
Это утверждение приводит к ошибке syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
Вот уродливый обходной путь ….
<?php
class simpleClass {
public function __construct() {
$this->fetcher = new simpleClass2();
}
public function printBaseURL() {
$fetcher = $this->fetcher;
print 'Base URL: ' . $fetcher::BaseUrl;
}
}
class simpleClass2 {
const BaseUrl = 'one';
}$simpleClass = new simpleClass();
$simpleClass->printBaseURL();
Вы можете использовать функцию для возврата константы
class MyClass
{
function getConstant() {
return self::CONSTANT . "\n";
}
}
Затем вызовите эту функцию
$class = new MyClass();
$class->getConstant();
Или просто назвать константу
MyClass::CONSTANT;
Вы можете найти больше информации о доступе к константам в классах Вот. Посмотрите на «Пользователь добавил заметки», очень хорошие примеры с объяснением там.