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