PHP - Зенд, скажем, избегать магических методов?

Я читал эту страницу -http://deaduseful.com/blog/posts/50-php-optimisation-tips-revisited

И одна из рекомендаций заключалась в том, чтобы избегать использования магических методов, приведенных в PDF-документе Zend Performance, в котором нет оснований рекомендовать их избегать.

После некоторого поиска в Google (и тут я нашел несвязанный вопрос) я подумал, есть ли у кого-нибудь какие-либо рекомендации по этому поводу?

Я использую __get () много в моем коде, обычно для сохранения переменных, которые я не всегда использую, например.

У меня может быть таблица с именем, desc, category_id, time_added

Мой get будет выглядеть примерно так:

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)

Ваш ответ на вопрос