Zend diz evitar métodos mágicos?

Eu estava lendo esta página -http://deaduseful.com/blog/posts/50-php-optimisation-tips-revisited

E uma das recomendações era evitar o uso de Métodos Mágicos, citados em um PDF do Zend Performance que não justifica sua recomendação de evitá-los.

Depois de algumas pesquisas no Google (e terminando aqui em uma pergunta não relacionada), eu me perguntava se alguém tinha alguma recomendação nessa área.

Eu uso muito o __get () no meu código, geralmente para salvar variáveis que eu nem sempre uso, por exemplo.

Eu posso ter uma tabela com nome, desc, category_id, time_added

Meu get ficaria algo assim:

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);
    }
}

Essa parece ser uma ótima maneira de fazer as coisas, pois só consigo obter algo do banco de dados, se necessário, e posso referenciar coisas como $ article-> time_added, em vez de brincar com matrizes.

Isso seria considerado uma prática ruim e uma carga extra no servidor?

Frequentemente, estenderei as classes com métodos mágicos e farei algo assim se a classe filho não corresponder a algo em um 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:
            return parent::__get($name);
    }
}

Isso seria uma prática ruim e ruim para o desempenho? O número máximo de níveis que tenho ao estender métodos mágicos é três.

questionAnswers(3)

yourAnswerToTheQuestion