Как получить доступ к константе из объекта вместо его класса?

Мне нужно получить доступ к константе, которая принадлежит классу, но вместо того, чтобы явно писать имя класса, я хочу получить его непосредственно из объекта. Объект является свойством другого объекта.

$this->fetcher::BASE_URL

Это утверждение приводит к ошибке syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)

0

Решение

Вот уродливый обходной путь ….

<?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();
1

Другие решения

Вы можете использовать функцию для возврата константы

class MyClass
{
function getConstant() {
return  self::CONSTANT . "\n";
}
}

Затем вызовите эту функцию

$class = new MyClass();
$class->getConstant();

Или просто назвать константу

MyClass::CONSTANT;

Вы можете найти больше информации о доступе к константам в классах Вот. Посмотрите на «Пользователь добавил заметки», очень хорошие примеры с объяснением там.

0