Задать вопрос
@dasauser
Пишу на PHP

Как сделать «абстрактные константы»?

Насколько законно так делать:
<?php
namespace App\Services;

abstract class Service
{
    protected $entity;
    protected $params;

    /**
     * Service constructor.
     * @param array $params
     * @param bool $auth
     * @throws \Exception
     */
    public function __construct(array $params = [], bool $auth = true)
    {
        $this->params = $params;

        if ($auth === true) {
            $this->config_name = Auth::auth(static::getConfigName()); //И вот так (начало ниже)
        }
    }

    /**
     * @return string
     * @throws \Exception
     */
    public static function getConfigName(): string
    {
        return static::CONFIG_NAME; // Вот так
    }
}

Название константы, думаю, говорит само за себя (зачем? Надо).
Собсна, такой код заставляет того, кто расширяет этот класс, определять константу.
Есть еще вариант сделать интерфейс, метод, и возвращать методом даже не константу, а просто строку, но суть та же, только подход другой.
  • Вопрос задан
  • 502 просмотра
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Но чем это отличается от определения переменных? Суть константы в том, что ее никогда нельзя переопределить, в ее иммутабельности, а у вас бред. Поэтому делать так законно, но с константами не имеет ничего общего.

По сути, вам просто нужно свойство, которое получает значение при инициализации компонента.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽