parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 06.03.2022 16:44 / 06.03.2022 16:58

В моем случае класс не хранит пользовательских данных, поэтому создание экземпляра не требуется.
Вы скоро столкнётесь с тем, что при работе с БД нужно передавать конфигурацию, минимально состояющую из строки соединения.
Статичность приведёт к необходимости передачи этой конфигурации каждому методу, что является сомнительным удобством.
$self.fields хотелось бы избежать, чтобы не хранить все время конфиг в памяти.
У вас миллион полей?
Это такие мелочи, что и думать о какой-то оптимизации бессмысленно.
В случае статического класса и подавно.

Даже если избежать статического конструктора, поля всё равно будут «храниться в памяти», хотя бы на уровне скомпилированного кода.
Они же не из астрала будут появляться при обращении к свойствам.
table_name вычисляется из названия класса, а не просто равен ему, поэтому это свойство надо как-то вычислить один раз.
Через GET_table_name не получится, т.к. там будет каждый раз происходить вычисление.
Вычисляйте как угодно, там обычный код.
Чтобы делать это разово используйсте «ленивые свойства», их же можно использовать и для основных полей:
@GET_DEFAULT[field]
$result[$self.fields.$field]

$self.$field[$result]

@GET_table_name[]
$result[${self.CLASS_NAME}_^math:random(1000)]

$self.table_name[$result]
Для table_name это избыточно, можно просто задать свойство в @auto[].
Да и для статических полей тоже: если используется некий статический конструктор, то можно разово задать поля класса в нём.