有这么个需求,就是应用程序依赖两个 composer 类库 A 和 B , AB 都挺重量级的因此加载时间会稍长。
目前有个数据库操作类 DB (其实例名称为$db ),该类会在特定条件下调用 A 或者 B ,因此我想将 A, B 生成的对象 a, b 赋予数据库类,如$db->a, $db->b
。
但是,并不是所有场合下 A 或 B 内的方法都会被调用,因此在 DB 类的构造函数内预先将 a, b 初始化好的话会再大量请求中浪费掉二者的初始化时间(尤其再 AB 还是重量级类库的情况下)。
我原先的做法是以类中方法返回对象的途径实现的懒加载,如下
class DB{
public $a, $b;
private function get_a(){
return isset($this->a)?$this->a:new A($init_params);
}
//使用 a 的时候便可以如下:
public function use_a(){
$this->get_a()->methods_of_a();
}
}
然后我又改成了使用 PHP 魔术方法__set()来进行,但是有点臃肿。
因此请问大家有什么好的建议么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.