jced-artem / lazy-loading
使用引用属性和闭包实现的快速简单的懒加载特性
1.0.1
2016-12-15 22:55 UTC
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-29 01:58:21 UTC
README
使用引用属性和闭包实现的快速简单的懒加载特性
您无需再编写类似代码来实现懒加载
class ObjectFactory
{
private $object;
public function getObject()
{
if (empty($object)) {
$this->object = new stdClass();
}
return $this->object;
}
}
实际上,您也不必记住在哪里需要使用 empty(),is_null() 或 $x === false!
只需使用 LazyTrait
class ObjectFactory
{
use \Jced\LazyTrait;
private $object1;
private $object2;
private $object3;
private $object4;
private $object5;
public function getObject1()
{
// assert empty by default
return $this->lazy($this->object1, new stdClass());
}
public function getObject2()
{
// assert empty by default
return $this->lazy($this->object2, function() {
return new stdClass();
});
}
public function getObject3()
{
// assert is_null
return $this->lazy($this->object3, new stdClass(), false, true);
}
public function getObject4()
{
// assert is false
return $this->lazy($this->object4, new stdClass(), false, false, true);
}
public function getObject5()
{
// assert is false or empty or is_null
return $this->lazy($this->object5, new stdClass(), true, true, true);
}
}
安装
composer require jced-artem/lazy-loading
注意
请注意,如果您将对象作为 'return' 参数传递,您将获得引用。如果您需要防止这种情况,请使用 new 或 clone。