对象属性中的默认值(如果不存在)

时间:2015-11-10 19:37:01

标签: php codeigniter oop model-view-controller

我想学习OOP以使我的控制器更加干净。所以在我的网站上,我从数据库中获得了一些带有image_name的产品。如果未设置image_name,我想设置默认值。我不想在我的视图或模型中制作任何其他内容以检查图像是否已设置,因此我创建了一个包含某些属性和模型的新类。在这里,我检查我需要什么,所以我的控制器更干净。 在我看来,我使用$product->image_name,其中image_name是数据库中列的名称,但使用我的类我希望image_nameimagefromdb.jpgdefaultimage.jpg如果没有设置。如何在我的控制器中调用此类来工作?

这是我的班级:

class Product
{

    private $_product;
    private $_resolution;

    public function __construct($product, $resolution){

        $this->_product = $product;
        $this->_resolution = $resolution;
    }

    public function products() {

        foreach($this->_product as $product){
            $product->nume_imagine = $this->parse_image_name($product);
        }

        return $this->_product;

    }


    public function product() {

        $this->_product->nume_imagine = $this->parse_image_name($this->_product);

        return $this->_product;

    }


    private function parse_image_name($product)
    {
        if($product->nume_imagine):
            $image = base_url('assets/uploads/'.$product->id_produs.'/'.$this->image_resolution($product->nume_imagine, $this->_resolution));
        else:
            $image = base_url('assets/images/no-product-image-available.png');
        endif;
    }

    private function image_resolution($image_name, $resolution) {

        $image = explode('.', $image_name);
        return $image[0].'_'.$resolution.'.'.$image[1];
    }
}

和控制器:

$best_offer     = new Product($this->products->best_offer(), 270);

但我在image_name属性上显示为空。

1 个答案:

答案 0 :(得分:2)

函数parse_image_name没有返回任何内容。如果您返回$image变量,它将按照您的预期设置。

private function parse_image_name($product)
{
    if($product->nume_imagine):
        $image = base_url('assets/uploads/'.$product->id_produs.'/'.$this->image_resolution($product->nume_imagine, $this->_resolution));
    else:
        $image = base_url('assets/images/no-product-image-available.png');
    endif;

    return $image;
}