OOP PHP和实例化类

时间:2013-01-30 15:52:12

标签: php

我对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>';
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

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

$array = FactoryProducts::getProducts();

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