@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; // Вот так
    }
}

Название константы, думаю, говорит само за себя (зачем? Надо).
Собсна, такой код заставляет того, кто расширяет этот класс, определять константу.
Есть еще вариант сделать интерфейс, метод, и возвращать методом даже не константу, а просто строку, но суть та же, только подход другой.
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 1
Но чем это отличается от определения переменных? Суть константы в том, что ее никогда нельзя переопределить, в ее иммутабельности, а у вас бред. Поэтому делать так законно, но с константами не имеет ничего общего.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽