PHP

Não mude o escopo dos seus objetos

Written by Pedro Mendes · 57 sec read >

Imaginemos a seguinte situação : você seguindo o modelo de classes criado para o projeto X, cria uma classe de usuários. Lá você tem todo o cuidado para definir os Gets e Sets, colocar seus atributos com seus devidos modificadores de acesso, cria todos os seus métodos e tudo fica perfeito, respeitando os mais elegantes padrões de programação.  Logo após, você usa essa classe para, por exemplo, fazer uma busca pelo usuário de ID 7. Talvez a busca fique assim:

$usuario = new User();

$usuario->setId(7);

$usuarioDesejado  = $usuario->selectUser();
 

Ok, tudo ok. Mas…. e se de repente você digita o nome do atributo de maneira errada, como por exemplo seid .  O PHP vai retornar um erro, correto ? Errado. Ele não retorna erro algum. Ele não retorna nada. Na verdade, ele cria um atributo em tempo de execução chamado, neste exemplo, seid. Isso é um problema.

Claro que você, assim como eu, só alteraria o escopo de um objeto em tempo de execução por um enorme engano. Faria alguns testes, descobriria o erro e todos ficam felizes ( hipotéticamente ). Porém, existem alguns programadores que não pensam assim. Pensam que se a linguagem permite, tem que usar. Logo, aproveitam a festa pra fazer uma zona com seu objeto. Começam a criar atributos alterando o design original da sua classe.

Não faça isso. Em pouco tempo o projeto se tornará em uma bola de neve, onde não se tem controle nenhum sobre o comportamento do seu código. Use a cabeça.

Por hoje é só pessoal.

Magento em um ambiente distribuído

Pedro Mendes in PHP
  ·   4 min read

Factory Pattern e PHP

Pedro Mendes in PHP
  ·   9 sec read

2 Replies to “Não mude o escopo dos seus objetos”

  1. Saudações,

    Concordo plenamente c/ o POST! Uma idéia que gosto e implemento quando estou desenvolvendo alguma coisa é o encapsulamento.

    Claro! Nem tudo é perfeito, se o cara fazer setAgumaCoisa(valor) o php vai executar, mas mesmo assim, facilita muito a vida de quem pega e usa meus objetos.

    Abraços e continue assim

  2. Temos como bloquear esse comportamento no PHP5 usando os métodos mágicos de sobrecarga __set e __get que estouram automaticamente quando um atributo inexistente tenta ser acessado. É só criar seus métodos e dar uma Exception.

    Entretanto vários frameworks utilizando essa “característica” do PHP para entupir seus modelos e/ou controladores com as bugigangas deles. Logo não podemos sair travando tudo… O Code Igniter é um deles…

    A solução é tenta conscientizar a galera mesmo…

    Obrigado pelo comentário e estamos aí!

Deixe um comentário

O seu endereço de e-mail não será publicado.