0

これは、ここで良い答えを見つけて数年後の私の最初の質問です。より深いレベルの OOP アプローチを使用しようとして、自分の作業の 1 つを再コーディングしていますが、自分が行っていることが「正しい」かどうかはわかりません。

私がやろうとしているのは単純な製品の作成ですが、十分に抽象化されているため、他のコーダーはデータベースが何を使用しているか、製品データを有効にする方法を知る必要はありません。単純な create($attr) メソッドのようなものです。

これは、コードの基本的なスキームです。

abstract class Crud_model_abstract {

 # private vars
 # getter for private vars
 # setter for private vars
 # some basic methods
}

class Product_model_crud extends Crud_model_abstract {

 # private vars
 # getter for private vars
 # setter for private vars
 # CRUD methods (using phpactiverecord.com lib)
}

次に、Product_model_crud と同じ構造を持つカテゴリ、ブランドなどのいくつかのクラス

今私の質問はこれです:実際の製品を構成する別のモデルを作成する必要があります(カテゴリをテーブルに追加し、ブランドをテーブルに追加します....次に、製品を作成して保存します)、パラメーターを渡すコントローラーからそのモデルを呼び出します、または代わりにその大きなモデル (製品を構成するモデル) をコントローラーに変換する必要があります。

大きなモデルを作成する必要があると思いますが、現時点では何も確信が持てません。私はOOPの良い実践についてあまりにも多くの資料を読んだことがあります.

私が理解していること(間違っている場合は修正してください)は、コードをよりクリーンで具体的なものにするために、コードに十分なレイヤーが必要であるということです。しかし、場合によっては、いつ十分かわかりません。

多分それはばかげた質問かもしれません (もちろん!!) しかし、私はもう一体何をしているのかわかりません!! ありがとうございます!!

4

1 に答える 1

0

1 つのモデルを使用して製品を挿入するだけです。例えば:

class Products extends abstractClass {

public function addProduct($params) {
 // Insert
}

public function getProduct($id) {
 // Get a product
}

public function editProduct($id, $params) {
 // Edit
}

}

抽象クラスは、子クラスに含める必要があるメソッドを指定します。シナリオ全体を考えすぎていると思います。

次に、次のようにします。

$product = new Products();
$product->addProduct(array('id' => 5, 'name' => 'Dog toy'));
于 2012-06-16T20:12:22.627 に答える