Возможно ли использование констант в константах? Добрый день.
Решил я тут в одном небольшом проекте без PDO и ORM вынести все запросы в отдельный класс. Чтобы увеличить гибкость хочу сделать так:class Query
{
const TABLE_PREFIX = 'prefix_';

const TABLE_ENTITYES = 'entity';
//?i - плейсхолдер для обёртки над mysqli
const GET_ENTITY_BY_ID = '
SELECT
`id` AS id,
`name` AS name,
`origin` AS domain,
`token` AS token
FROM
' . self::TABLE_PREFIX . self::TABLE_ENTITYES . '
WHERE
`id`=?i
LIMIT 1';
}

$queryString = Query::GET_ENTITY_BY_ID; //обращение к запросу
Но PHP, оказывается, не допускает использование констант в константах. Есть ли вариант как то заставить это работать или всё таки придётся возиться с геттерами и вводить какую то шаблонизацию? Не хочется отдельный экземпляр класса создавать, а хочется получать всё по статике.
Я сильно многого хочу, да? :)
Заранее спасибо :)

21 Авг 2019 в 07:06
145 +1
0
Ответы
1

Да, к сожалению, PHP не позволяет использовать константы внутри констант. Однако, вы можете использовать публичные статические переменные и геттеры для достижения вашей цели. Примерно так:

class Query
{
public static $TABLE_PREFIX = 'prefix_';
public static $TABLE_ENTITYES = 'entity';
//?i - плейсхолдер для обёртки над mysqli
public static function GET_ENTITY_BY_ID()
{
return '
SELECT
`id` AS id,
`name` AS name,
`origin` AS domain,
`token` AS token
FROM
' . self::$TABLE_PREFIX . self::$TABLE_ENTITYES . '
WHERE
`id`=?i
LIMIT 1';
}
}

Теперь вы можете получить запрос таким образом:

$queryString = Query::GET_ENTITY_BY_ID(); //обращение к запросу

Надеюсь, это поможет вам достичь желаемой гибкости в вашем проекте. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Удачи!

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир