我正在阅读这个页面 - http://deaduseful.com/blog/posts/50-php-optimisation-tips-revisited
其中一项建议是避免使用从 Zend Performance PDF 中引用的魔术方法,该 PDF 没有给出建议避免使用它们的理由。
经过一些谷歌搜索(并在这里结束一个不相关的问题),我想知道是否有人在这方面有任何建议?
我在我的代码中经常使用 __get(),通常是为了保存我不经常使用的变量,例如
我可能有一个带有名称、描述、类别 ID、添加时间的表
我的 get 看起来像这样:
公共函数 __get($name) {
开关($名称){
案例“名称”:
案例“描述”:
案例“类别”:
案例“时间添加”:
$result = do_mysql_query();
$this->name = $result['name'];
$this->desc = $result['desc'];
$this->category = $result['category'];
$this->time_added = $result['time_added'];
返回 $this->{$name};
休息;
默认:
throw Exception("试图访问不存在的或私有的属性 - ".$name);
}
}
这似乎是一种很好的做事方式,因为我只会在需要时从数据库中获取一些东西,并且我可以引用诸如 $article->time_added 之类的东西,而不是摆弄数组。
这会被认为是不好的做法和服务器上的额外负载吗?
通常,如果子类与 get 中的某些内容不匹配,我会使用魔术方法扩展类并执行类似的操作。
公共函数 __get($name) {
开关($名称){
案例“名称”:
案例“描述”:
案例“类别”:
案例“时间添加”:
$result = do_mysql_query();
$this->name = $result['name'];
$this->desc = $result['desc'];
$this->category = $result['category'];
$this->time_added = $result['time_added'];
返回 $this->{$name};
休息;
默认:
返回父级::__get($name);
}
}
这会是不好的做法并且对性能不利吗?扩展魔术方法时,我拥有的最大级别数是三个。
