【发布时间】:2023-02-03 18:58:10
【问题描述】:
我试图缓存一个对象的方法,所以每次我调用类和方法时,它不会在第一次后再次处理。
这就是我想要实现的目标,
class App {
public $data = null;
public function print() {
if ( $this->data === null ) {
$this->data = "First time.";
}
else {
$this->data = "After first time.";
}
return $this->data;
}
}
$data = new App();
echo $data->print() . "<br>";
echo $data->print() . "<br>";
$data2 = new App();
echo $data2->print() . "<br>";
echo $data2->print() . "<br>";
结果
第一次。 第一次之后。 第一次。 第一次之后。
如您所见,当我在 $data2 中再次调用它时,它正在再次处理 print() 方法。
是否可以缓存所以结果将是
第一次。 第一次之后。 第一次之后。 第一次之后。
【问题讨论】:
-
如果需要,请继续使用
$data并且不要创建该类的新实例。一个类的每个实例是故意地分开,因此您可以区别对待它们(例如,您可以有一个Employee类的多个实例,这些实例可以形成一个员工列表,并且您希望为每个实例打印不同的数据 - 这将是一个好的事物)。 -
或者,如果您想要一个在类的所有实例(否则是分开的)之间共有的变量,您可以考虑使用静态变量和/或函数。
-
@ADyson 帮了大忙!现在我正确地理解了静态和非静态方法。