@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
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Adamos
@Adamos
Выражение "присвоить константе значение" в коде противоречит и семантике языка, и здравому смыслу.
Почему у вас вообще эти константы в интерфейсе, кто решил, что это константы?
Логичнее завести внутренний массив, в котором константы будут ключами, а значения определяются в конструкторе, и геттер к нему, чтобы использовать их там, где у вас сейчас прописаны "изменчивые константы".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 21:59
15000 руб./за проект
02 мая 2024, в 21:54
1000 руб./в час
02 мая 2024, в 21:27
300000 руб./за проект