Я прочитал этот пост после поиска похожих постов.
У меня немного другая, но связанная проблема.
Есть ли способ БЕЗ ВЕЛИЧИНЫ () (потому что это плохая идея - открывать для злоупотреблений, если кто-то позволяет пользователю указать значение, используемое в eval и т. д.), чтобы можно было определить структуру класса, например:
if(!class_exists($className) && dao::tableExists($className)) {
class $className extends daoObject {
public function __construct($uid) {
parent::__construct($uid);
}
}
dao::generateClass($className);
}
Причина этого в том, что когда новые базовые таблицы добавляются в каркас, они могут использоваться с универсальным объектом доступа к данным для доступа к соответствующим полям (получение / установка через __call в родительском объекте, добавление / вставка и обновление / удаление).) без написания класса для каждого из них, не требуя, чтобы кодировщик написал класс, а затем пришлось проверять его или писать собственные генераторы кода для различных типов таблиц.daoObject делает все это для меня.
Намерение состоит в том, чтобы использовать этот вид метода для определения класса, если он не существует, а затем записать определение класса в файл.
Еслиимя соответствующей таблицы не существует, оно не будет выполнено.Если класс существует (например, при следующем запуске), он не будет его определять.Если он не существует, но является именем таблицы, вы можете создать его, использовать и сохранить при первом вызове, что произойдет, когда будут вставлены новые таблицы и запущен скрипт для вставки данных.Авторы будут определять только поля таблицы и примеры данных через CSV.Этот сценарий будет генерировать классы и импортировать данные одним ударом.Я мог бы записать определение в файл, а затем включить его, что, кажется, могло бы работать, но я хочу сделать это ПОСЛЕ того, как я изменил свойства объекта, поэтому мне не нужно дважды записывать в файлы, чтобы сделать егоработа.
Это упрощенно , но возможно ли это?