0

私はPHPへのOOPアプローチに比較的慣れていませんが、何かを明確にしたかっただけです。

if(isset($_POST['insertProduct']) && !empty($_POST['productName'])){
    $newProduct = new product();
    $newProduct->productName = $_POST['productName'];
    $newProduct->servingSize = $_POST['servingSize'];
    $productID = $newProduct->insertProduct();   
}

したがって、上記のコードは、DBに新製品を入力するためのフォームがページに投稿されたときに実行されます。

$selectProduct = new product();
if($selectProduct->getProducts()){
    foreach($selectProduct->getProducts() as $product){ 
        echo '<option value="' .
            $product['productID'] . '">' . 
            $product['productName'] . '</option>';
    }
}

上記の部分は同じページにあり、明らかに現在、存在する製品クラスの2つのインスタンスがあります(新しい製品を追加するためにフォームが投稿されていると仮定します)。これはOOアプローチの利点を示していますか?2つのインスタンスを使用して異なるメソッドにアクセスする場合のように?それとも私がやりたいことをするのは悪い方法ですか?

4

1 に答える 1

0

getProducts製品のインスタンスとは何の関係もないので、少なくとも静的メソッドである必要があると思います。製品クラスは、製品の単一のデータのみを表す必要があるため、一般的な非インスタンスメソッドは静的に設定するか、別のクラスに移動する必要があります。

productインスタンスを作成するFactoryクラスを作成することをお勧めします。

$array = FactoryProducts::getProducts();

しかし、あなたは確かにそのメソッドをproductクラスの外に移動する必要があります。残りの部分については、すべてがうまくいくようです。

于 2013-02-17T14:47:23.147 に答える