Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://rafael.fiori.vilabol.uol.com.br/autoCompletation.jpg&key=fedd1357f901294316ff16bdddecf71f50530cbb3db7a75aabc7b190e7158843" alt="autoCompletation.jpg" />
este três metodos listados são da classe Registry, e não da classe Conexão (a qual o objeto pertence)
>
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...
@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.
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?
>
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.
Obrigado pelas respostas!
Pode marcar como resolvido, a dica do FLF funcionou certinho no NetBeans, e o DW realmente não tem essa funcionalidade
Abraços!
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