想像できる限り多くのORMをすでに使用しています。現在、私はRedBeanPHPに夢中/嫌いです。ここに行きます...それを数時間研究した後、私はこの非常に基本的な問題を解決するためのより良い方法が何であるかについて疑問を抱きました(最良の方法は、この場合、RedBeanの使いやすさの哲学によりよく適合する方法を意味します):
クラスの一部のプロパティへのアクセスを制限して、特定の種類の誤ったデータ操作を防ぐことができるのは非常に一般的です。これは通常、ゲッターとセッターをうまく利用して実現されます。ただし、RedBeanについてすでに知っている限り、ネイティブクラスには正式なセッターはなく、データベースで変更および永続化できるパブリックプロパティのみがあります。
私がやりたいのは、いくつかのプロパティが手動で変更されないように保護することです。そうすれば、他のプログラマーが次のような奇妙なことをするのを避けることができます。
$beam->insertion_date = 'yesterday';
R::store($beam);
もちろん、そのフィールドは行の挿入後に変更されるべきではありませんが、誰も変更しないと信じることはできません。保護されたプロパティをinsertion_dateに変更したり、何らかの方法でアクセスできないようにするなどの方法はありますか?
そのための最善の方法は$beam->setMetadata()
、特定のプロパティを変更してはならないことを宣言することだと思いますが、RedBeanでこれを実現する方法がわからず、公式マニュアルで十分な情報を見つけることができませんでした。どんな助けでも大歓迎です。
読んでくれてありがとう。