Задать вопрос
@Vladimir-Hetman

Конструктор и константа?

Везде искал, но так и не нашел ответа.
Меня терзает вопрос. Возможно ли инициализировать константы в конструкторе?
Версия PHP 8.1.3
Моя неудачная попытка:

interface Value {
const TYPE_ELEMENT  = 22;
const TYPE_SECTION  = 32;
const TYPE_PRODUCER = 43;
function __construct($Element, $Section, $Producer); 
}


class User implements Value {

function __construct($Element, $Section, $Producer){
self::TYPE_ELEMENT = $Element;
self::TYPE_SECTION = $Section;
self::TYPE_PRODUCER = $Producer;
}


function show(){
$values = [self::TYPE_ELEMENT, self::TYPE_SECTION, self::TYPE_PRODUCER];
$a= 0;

foreach($values as $items){
echo  ++$a . " - $items <br>";
}}
}

$obj = new User(2,3,4); // Не работает. Должно выводиться:
$obj->show();           // 1-2
                        // 2-3
                        // 3-4
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Adamos
@Adamos
Выражение "присвоить константе значение" в коде противоречит и семантике языка, и здравому смыслу.
Почему у вас вообще эти константы в интерфейсе, кто решил, что это константы?
Логичнее завести внутренний массив, в котором константы будут ключами, а значения определяются в конструкторе, и геттер к нему, чтобы использовать их там, где у вас сейчас прописаны "изменчивые константы".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы