Уже использовано столько ОРМ, сколько вы можете себе представить. В данный момент я влюблен в ненависть к RedBean PHP. Итак, после нескольких часов его изучения у меня возникло сомнение в том, что является лучшим способом решения этой самой основной проблемы (в данном случае лучший способ означает способ, который лучше соответствует философии простоты использования RedBean):
Очень часто ограничивают доступ к некоторым свойствам наших классов, чтобы мы могли предотвратить некоторые виды неправильных манипуляций с данными. Это обычно достигается с хорошим использованием геттеров и сеттеров. Но, насколько уже известно о RedBean, в нативных классах нет формальных установщиков, только некоторые открытые свойства, которые можно изменить и сохранить в базе данных.
Что я хотел бы сделать, это защитить некоторые свойства от изменения вручную, чтобы я не мог заставить других программистов создавать какие-либо странности вроде:
$beam->insertion_date = 'yesterday';
R::store($beam);
Это поле никогда не должно изменяться после вставки строки, очевидно, но мы не можем просто доверять, что никто этого не сделает. Есть ли способ сделать что-то вроде включения inserttion_date защищенным свойством или каким-то образом сделать его недоступным?
У меня такое ощущение, что лучший способ сделать это - использовать $beam->setMetadata()
и объявить, что данное свойство не должно быть изменено, но я не знаю, как этого добиться в RedBean, и все еще не могу найти достаточно информация в официальном руководстве. Любая помощь приветствуется.
Спасибо за чтение.