Код: Выделить всё
public function create_table() {
$q = "`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`type` SMALLINT NULL,
`value` decimal(6,2) DEFAULT NULL,
`usage_count` int null,
CONSTRAINT code_unique UNIQUE (discount_code)";
$ret = $this->actually_create_table($q);
return $ret;
}
Проблема в том, что в моем коде «трансформера» мне приходится по очереди создавать экземпляры каждого класса: сначала с пустыми данными, чтобы сгенерировать схему с помощью метода create_table(), а затем просто перебирать все записи и позволять новому коду выполнять всю свою магию. Эта первоначальная настройка «инициализация с пустыми данными, затем вызов create_table()» — это скучно, но «хорошо», за исключением случаев, когда я начал реализовывать проверки данных инициализации. Например, если вы передаете данные клиенту без адреса электронной почты, давайте создадим исключение, поскольку нам не нужны эти данные в базе данных. Итак, теперь я взломал код своего преобразователя, если только я не дам ему «настоящие» данные, а затем просто не «сохраню» их. Это, вероятно, сработало бы, но это не очень удобно для CLoOj.
Затем я начал пытаться сделать эти методы статическими, чтобы избежать создания экземпляров. Что ж, это приводит меня к тому, что мне приходится статифицировать множество других методов и данных, и в конечном итоге я упираюсь в стену, например, с моим родительским классом БД, который имеет все связанные с БД вещи (например, метод fact_create_table()), которые нужны всем этим классам, включая созданный экземпляр $pdo члена, который obvz не может быть статическим.
Сейчас я просто застрял и задаюсь вопросом, решил ли кто-нибудь подобную проблему дизайна, потому что поиск в intarwebs имел безрезультатно.
Подробнее здесь: https://stackoverflow.com/questions/797 ... on-and-sta
Мобильная версия