php懒加载怎么实现?帮我用php实现下
时间: 2023-05-22 20:06:44 浏览: 83
Mybatis懒加载的实现
PHP 懒加载可以通过魔术方法 __get() 和 isset() 实现。具体实现如下:
class LazyLoader {
private $data = []; // 存储属性值的数组
private $loaded = []; // 记录属性是否已经加载过的数组
public function __get($key) {
if (isset($this->loaded[$key])) {
return $this->data[$key];
} else {
// 假设需要加载的属性值为 $value
$value = ...; // 加载属性值的代码
$this->data[$key] = $value; // 存储属性值
$this->loaded[$key] = true; // 标记属性已经加载过
return $value;
}
}
public function __isset($key) {
return isset($this->loaded[$key]);
}
}
// 示例
$loader = new LazyLoader();
// 第一次获取 foo 属性,会触发加载代码
$foo = $loader->foo;
// 第二次获取 foo 属性,不会触发加载代码
$foo2 = $loader->foo;
阅读全文