我正在尝试在我的代码中完成以下语法:
$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();
...
}
}
代码的问题是我在数据类中会有很多未使用的实例,因为我不会在特定的场景中使用它们。我怎么能阻止这个?
答案 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只会在第一次调用时为你提供一个对象!