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.