Насколько законно так делать:
<?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; // Вот так
}
}
Название константы, думаю, говорит само за себя (зачем? Надо).
Собсна, такой код заставляет того, кто расширяет этот класс, определять константу.
Есть еще вариант сделать интерфейс, метод, и возвращать методом даже не константу, а просто строку, но суть та же, только подход другой.