Статические свойства в PHP7 анонимных классах

Я работаю над ORM для одного из моих проектов и пытаюсь избежать ненужного «жесткого кодирования» классов, используя анонимные классы для расширения функциональности по умолчанию базовой абстрактной модели.

Прямо сейчас все запросы основаны на статическом свойстве $table_name что я хотел бы переопределить в анонимном классе. Однако, когда я пытаюсь сделать это, все другие экземпляры анонимного класса получают одно и то же значение, хотя в идеале они получают свои собственные различные значения. Я бы просто использовал нестатическое свойство в классе, но есть статические функции, которые используют статическое свойство.

Варианты, которые я вижу:

  1. Вручную создайте каждый класс и жестко закодируйте имя таблицы для каждой модели.
  2. Переработать код для использования нестатических свойств и параметров.

Оба эти решения работают, но не кажутся такими элегантными, как мне бы того хотелось. Какие-либо предложения?

Вот пример кода

Модельный класс

<?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;
}
});

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …