PHP – Zend说避免魔法方法?

前端之家收集整理的这篇文章主要介绍了PHP – Zend说避免魔法方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在读这个页面http://deaduseful.com/blog/posts/50-php-optimisation-tips-revisited

其中一个建议是避免使用魔术方法,引用Zend Performance PDF,它没有理由建议避免它们.

经过一些谷歌搜索(并在这里解决了一个无关的问题),我想知道有没有人在这方面有任何推论?

我在我的代码中使用__get(),通常来保存我不总是使用的变量

我可能有一个名字,desc,category_id,time_added的表

我的得到会像这样:

public function __get($name) {
    switch($name) {
        case 'name':
        case 'desc':
        case 'category':
        case 'time_added':
            $result = do_MysqL_query();
            $this->name = $result['name'];
            $this->desc = $result['desc'];
            $this->category = $result['category'];
            $this->time_added = $result['time_added'];
            return $this->{$name};
        break;
        default:
            throw Exception("Attempted to access non existant or private property - ".$name);
    }
}

这似乎是一个伟大的方式来做事情,因为我只需要从数据库中获得某些东西,如果需要的话,我可以反驳像$article-> time_added这样的东西,而不是围绕数组.

这将被认为是坏的做法和额外的负载在服务器上?

通常,我将使用魔术方法扩展课程,如果子类不匹配某项内容,则可以执行此类操作.

public function __get($name) {
    switch($name) {
        case 'name':
        case 'desc':
        case 'category':
        case 'time_added':
            $result = do_MysqL_query();
            $this->name = $result['name'];
            $this->desc = $result['desc'];
            $this->category = $result['category'];
            $this->time_added = $result['time_added'];
            return $this->{$name};
        break;
        default:
            return parent::__get($name);
    }
}

这是不好的做法和坏表现?扩展魔法的最大级别是3.

这是真的,他们是更慢…但差异是如此之小,速度vs代码是一个因素.对于更快的开发和维护的差异,值得我们担心吗?

有关统计资料,请参阅magic benchmarks

猜你在找的PHP相关文章