Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Fiori

[Resolvido] Design Pattern Registry + Code Completion

Recommended Posts

Olá, estou iniciando no POO e estou brincando um pouco com o Registry, mas estou com um problema...

Quando pego um objeto que esta guardado no Registry o code completion não lista os metodos deste objeto, e sim os metodos da classe Registry, acredito que quando o projeto começar a crescer isso pode ser extremamente confuso, gostaria de saber se existe alguma maneira de forçar a listar os metodos corretamente

 

Testei com o DreamWeaver e com o PHP Designer, e ambos se comportam da mesma maneira...

segue uma foto:

autoCompletation.jpg

 

este três metodos listados são da classe Registry, e não da classe Conexão (a qual o objeto pertence)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, ele só está recuperando o PDO. mas o objeto em si não será listado, amigo recomendo que use outro editor. como NetBeans, eclipse, zend .. são bem melhores que o dreamweaver

Portanto quando eu guardar um objeto no registry, ao recupera-lo perdei a lista de metodos da sua classe? Pq se isso for uma regra, vou abandonar o Registry...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Rafael, o Andrey não quis dizer isto, ele quis dizer que o autocomplete não vai exibir o objeto PDO. Lembre-se que em PHP, objetos sempre são passados por referência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz um teste aqui usando o NetBeans e também a função auto-complete do IDE não funcionou, retorna apenas os métodos da classe Registry. Eu imaginei que aqui talvez funcionasse por eu estar usando o Registry do Zend Framework e o IDE ser integrado com ele.

 

Não sei se existe algum macete pra fazer funcionar, mas como o pattern Registry é pra ser usado somente em casos mais específicos, como conexão com o banco de dados e autenticação, eu não vejo isso como algo que vá causar problemas no desenvolvimento de aplicações maiores.

 

E acredito eu que se sua aplicação estiver devidamente estruturada você dificilmente vai precisar usar a classe Registry de maneira direta, pois por exemplo no Zend Framework a classe Zend_Auth (de autenticação) usa a classe Zend_Registry, mas você nunca precisa chamar diretamente a classe Zend_Registry, você só usa a classe Zend_Auth, entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz um teste aqui usando o NetBeans e também a função auto-complete do IDE não funcionou, retorna apenas os métodos da classe Registry. Eu imaginei que aqui talvez funcionasse por eu estar usando o Registry do Zend Framework e o IDE ser integrado com ele.

 

Não sei se existe algum macete pra fazer funcionar, mas como o pattern Registry é pra ser usado somente em casos mais específicos, como conexão com o banco de dados e autenticação, eu não vejo isso como algo que vá causar problemas no desenvolvimento de aplicações maiores.

 

E acredito eu que se sua aplicação estiver devidamente estruturada você dificilmente vai precisar usar a classe Registry de maneira direta, pois por exemplo no Zend Framework a classe Zend_Auth (de autenticação) usa a classe Zend_Registry, mas você nunca precisa chamar diretamente a classe Zend_Registry, você só usa a classe Zend_Auth, entendeu?

 

 

Não é possivel o auto-complete funcionar, porque ele não sabe quais objetos estão no registro. O que pode-se fazer, caso realmente queira o auto-complete, é o seguinte:

$db = Registry::get('DB1'); /* @var $db Conexao */

 

Assim você está mostrando para a IDE que a variável $db é na realidade uma instância da classe Conexao. Não sei se o Dreamweaver suporta isto, mas as principais IDE's suportam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.