php oop代码语法,未使用的实例

时间:2014-10-29 16:34:10

标签: php

我正在尝试在我的代码中完成以下语法:

$data = new Data();
$user = $data -> user -> get(1);
$product = $data -> product -> get(1);

使用:

class Data {

    public $user = null;
    public $product = null;
    public $a = null;
    ...

    function __construct() {           
        this -> user = new User();
        this -> product = new Product();
        this -> a = new A();
        ...
    }

}

代码的问题是我在数据类中会有很多未使用的实例,因为我不会在特定的场景中使用它们。我怎么能阻止这个?

3 个答案:

答案 0 :(得分:2)

在最基本的层面上,您可以执行类似的操作,为用户属性定义一个getter,并且只在第一次调用该对象时才会实例化该对象。

class Data {

    protected $user = null;

    public function user()
    {
        if ($this->user === null) {
            $this->user = new User();
        }
        return $this->user;
    }

}

答案 1 :(得分:0)

您可以使用聚合,这意味着您将对象传递给类,这样类可以获取null或对象,并且您可以通过不一次初始化所有内容来节省资源。 Here's a decent post about it(不是我的)。

基本上就是这样:

class Test {
  public $a = '';

  public function __construct($object) {
    $this->a = $object;
  }
}

答案 2 :(得分:0)

我会说你可以尝试这样的事情:

class ThisOne{

    protected $user = null;

    public function user()
    {
        if ($this->user === null) {
            $this->user = new User();
        }
        return $this->user;
    }

}

getter只会在第一次调用时为你提供一个对象!