我正在阅读这个页面 - 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); } }
这会是不好的做法并且对性能不利吗?扩展魔术方法时,我拥有的最大级别数是三个。