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

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

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

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

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