0

我对 PHP 的 OOP 方法相对较新,但只是想澄清一下:

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

因此,当将表单发布到页面以将新产品输入数据库时​​,将执行上述代码。

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

上面的部分在同一页面上,显然现在存在产品类的两个实例(假设已发布表单以添加新产品)。这是否显示了 OO 方法的好处?就像使用两个实例来访问不同的方法一样?或者这是做我想做的事情的坏方法?

4

1 回答 1

0

我认为getProducts至少应该是一个静态方法,因为它与产品的实例无关。产品类应仅表示产品的单个数据,因此应将通用非实例方法设置为静态或移动到另一个类。

我建议您创建一个 Factory 类来product为您创建实例:

$array = FactoryProducts::getProducts();

但是您肯定需要将该方法移到product类之外。其余的,一切似乎都很好。

于 2013-02-17T14:47:23.147 回答