他のフレームワーク、またはpure-PHPで作業する場合、モデルのプロパティを保護します。次に、必要に応じてパブリックゲッターとセッターを作成し、__get()
と__set()
を使用してプロキシをプロキシします。これは私が夜に眠るのに役立ちます。Laravelモデルのプロパティを保護する方法
最近私はLaravelを使い始めました。私はEloquentモデルがどのように「保護されていない」かに驚いています。 $guarded
と$fillable
プロパティを使用して一括割り当てを制御することはできますが、それでも偶発的なアクセスには余裕があります。
たとえば、私のモデルにはstatus
というプロパティがあります。モデル作成時にデフォルト値が設定されており、$model->activate()
または$model->deactivate()
が呼び出された場合にのみ変更する必要があります。しかし、デフォルトでは、開発者はLaravelを使って直接変更することができます。私が見る限り、これを防ぐ唯一の方法はセッターを作成し、それが呼び出されると例外をスローすることです。
何か不足していますか?多分私はリラックスする必要がありますか?デフォルトで安全なEloquentモデルを構築する最善の方法は何ですか?