次のクラスがあるとします:
###動物###
###犬###
###ゴールデンレトリバー###
- ダックスフント
-
Animal を基本クラス、Dog を Animal のサブクラス、他の 2 つを Dog のサブクラスにしたいと考えています。 -
Laravel のベストプラクティスは何ですか? 4 つのモデルと 4 つの個別のテーブルを作成しますか?または、動物用と犬用の 2 つのテーブルを作成します。 -
また、各動物に「makeSound」関数がある場合、インターフェイスを使用してそれを実装し、犬が吠えることを想定できますが、犬種が異なると、わずかに異なる動作をさせるオーバーライドがいくつかある可能性があります。私が混乱しているのは、ゴールデンレトリバーが何であるかをどうやって理解すればよいのかということです。
それがただの動物だったら、私はこれを行うことができます
リーリー
しかし、それを行う方法がわかりません:
リーリー
このトピックに関する提案や読み物があれば、大歓迎です。私はオブジェクト指向プログラミングについてはある程度の知識がありますが、Laravel環境についてはあまり知識がありません。いくつかの記事を読みましたが、Laravel に特化した記事はありませんでした。
計画内のモデルはすべて動物なので、必ず動物テーブルと動物モデルを用意する必要があります。
ここで、より具体的なモデルが一般的な動物とは異なる動作をする場合、モデルを継承して、そのメソッドが物事を正しく処理できるようにすることができます。つまり、違いが PHP のみにある場合は、同じテーブルを参照してモデルを相互に継承させることができ、アプリケーションは、いくつかの基準に基づいて、異なるモデルをいつどのように操作するかを判断します。
データベースにも相違点がある場合、つまり犬の場合は追加情報が必要な場合は、動物テーブルへの外部キーを持つ犬の属性テーブルを構築できます。
最後に、モデルごとに異なるテーブルを使用することを決定できます。その場合は、抽象動物クラスを実装し、より具体的な動物モデル クラスがそれを独自の方法で拡張することをお勧めします。これにより、共通コンテンツは次のようになります。抽象動物クラスに実装されます。
上記の方法のどちらが優れているかについては、特定の状況に大きく依存します。