Я работаю над ORM для одного из моих проектов и пытаюсь избежать ненужного «жесткого кодирования» классов, используя анонимные классы для расширения функциональности по умолчанию базовой абстрактной модели.
Прямо сейчас все запросы основаны на статическом свойстве $table_name
что я хотел бы переопределить в анонимном классе. Однако, когда я пытаюсь сделать это, все другие экземпляры анонимного класса получают одно и то же значение, хотя в идеале они получают свои собственные различные значения. Я бы просто использовал нестатическое свойство в классе, но есть статические функции, которые используют статическое свойство.
Варианты, которые я вижу:
Оба эти решения работают, но не кажутся такими элегантными, как мне бы того хотелось. Какие-либо предложения?
Вот пример кода
Модельный класс
<?php
class Model{
protected static $table_name;
public static function query_table(){
[...use static::$table_name]
}
Расширение анонимного класса
(new class() extends TableModel {
protected static $table_name = null;
public function setTableName($table_name) {
static::$table_name = $table_name;
}
});
Задача ещё не решена.
Других решений пока нет …