Ir para conteúdo

POWERED BY:

Arquivado

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

Scientist

Produtividade com ZendFramework

Recommended Posts

Boa Tarde, atualmente desenvolvo em PHP utilizando o padrão MVC, e a algum tempo já venho lendo sobre ZendFramework e algumas funcionalidades, porém nunca apliquei o mesmo de fato em algum projeto real.

 

Gostaria de saber qual a porcentagem de ganho em produtividade utilizando o ZendFramework, ex: para criar um painel de login com controle de acesso completo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você apenas conhece o bê-a-bá da ferramenta ou conhece moderadamente bem mas ainda não a utilizou, infelizmente, não muito.

 

Mas quanto antes você começar, mesmo que com pequenos projetos, ao aprimorá-lo(s) com nova(s) funcionalidade(s) surgirá a necessidade de se aprofundar no assunto e, com isso, dominá-la.

 

Abrir os códigos-fonte e tentar entender como a máquina funciona, principalmente se você já tem conhecimento de Orientação a Objetos, pode ser de grande valia também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há alguns meses estudo também o Zend Framework, não possso lhe dar números em ganho de produtividade, mas destaco alguns pontos fortes:

 

- É um framework muito flexível, você pode usar partes dele e não obriga você a seguir um "padrão Zend" para utilizá-lo;

- Tem uma empresa forte por trás, isso significa que quando lançam um release, esse é muito mais testado de algo que nós poderiamos produzir;

- A organização da aplicação que ele propõe (e pode ser criada pelo Zend_Tool) deixa a aplicação muito bem organizada e prevê modularização;

- Para autenticação e acesso existem o Zend_Auth e Zend_Acl, um pouco difíceis de entender, mas depois dá pra implementar o controle tipo usuário X ação do controlador;

 

Pontos fracos:

 

- O Model não tem nenhum ORM forte por trás, não tive experiências muito "produtivas" com Zend_Db, embora integrá-lo (o Zend) com o Doctrine 2 seja extremamente fácil;

- Está mudando, o Zend 2 está quase saindo do forno, e trás muitas mudanças e novidades boas.

 

Se você está começando a pensar em um framework, dê uma olhada com carinho no Simfony 2. Ele é menos flexível que o Zend, mas não vai mudar tão breve, já adotou namespaces, é integrado por padrão ao Doctrine 2 e tem umas ferramentas e plugins que devem aumentar a produtividade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já me falaram muito bem do Simfony. Dizem ser extremamente rápido (em questões de performance) e de possuir um padrão bem definido para a programação.

 

Ele é menos flexível que o Zend

Nota: Gosto da inflexibilidade gerada dentro de um padrão. Torna as "coisas" menos "gambiarradas". Mas não sei dizer a qual ponto essa inflexibilidade se refere.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem querer entrar muito fundo nessa discussão Gabriel, concordo com você em partes. A inflexibilidade garante padronização.

 

Mas devido as necessidades atuais, prefiro frameworks mais flexiveis, porque em qualquer software a necessidade de manutenção e atualização é grande, e as vezes a flexibilidade é o limiar entre tem que reescrever todo seu módulo por causa de uma feature que seu framework não implementa ou adaptar (colar) alguma coisa nele para fazer a alteração (inclusive no prazo necessário)...

 

Vejo o Zend como um exemplo disso, posso optar entre seguir ou não seu padrão em alguns momentos ou mesmo usar partes do framework numa aplicação que já exista...

 

Além disso padronização e bons códigos dependem de bons programadores. Conheço muitos "causos" de gente que conseguiu fazer gambiarra até em frameworks Java

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu falei:

inflexibilidade gerada dentro de um padrão

 

Significa programar dentro de um padrão especificado e não o sistema ficar preso a implementação. Não confunda programar com inflexibilidade com criar uma aplicação inflexível.

 

Se você for estudar Design Patterns, verá que os padrões são, de certa forma, inflexíveis e tornam sua aplicação flexível. Entendeu a diferença?

 

Conheço muitos "causos" de gente que conseguiu fazer gambiarra até em frameworks Java

 

Java é uma linguagem inflexível. Não significa que as aplicações serão. Logo, ele é inflexível dentro de um padrão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi melhor o quis dizer...

 

Pelo que vi e li até hoje, cada um (Sf e Zend) propõe seu padrão, o Simfony gera uma certa dependência na aplicação, coisa que o Zend não faz. Mas não vou ficar me estendendo aqui por não ter uma experiência prática com Simfony.

 

Espero que surja alguém q conheça o framework afundo para me contrariar... (rs)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente, também não o conheço. Só pelo que ouço falar, tenho um amigo que trabalha com ele faz poucos meses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiquei meio "boiando" aqui sobre Programar de forma inflexível, sistema flexivel e inflexivel.

Poderiam me explicar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo, o zend trabalha com o padrão MVC. Logo, o padrão define que:

 

- A View é a saída ao usuário final. No caso da web, somente possuirá códigos referentes ao visual do site (HTML/CSS/JavaScript)

- O Model, conterá todas as regras de negócios, validações e a lógica em si. Além de realizar as consultas em banco.

- O Controller, somente determinará o que deve ser feito. Basicamente, realizará a ponte entre o model e a view. ( Há também um tipo de ligação entre model x view e view x controller, mas não é interessante no momento. É somente para que alguém não venha falar que eu esqueci disso.)

 

Dadas as regras. Você deve sempre segui-las. Você não deve criar html/css/javascript dentro do controller ou do model. Nem deve ter regras de negócios na view ou no controller. Isso é a inflexibilidade quanto ao padrão MVC. Ele exige que seja mantidas essas regras. Se forem bem mantidas, torna sua aplicação bem flexível. Mas flexível como?

 

Agora suponha que você queira mudar o visual do seu site. Já que você seguiu o padrão e separou tudo como deve ser. Não é necessário criar tudo do zero. Basta somente alterar a camada View. Isso é um sistema flexível. Você pode alterar uma camada sem necessidade de mudar uma vírgula em outra camada.

 

Agora imagine que você distribui as coisas. Criou parte do HTML no controller, o model da um echo em um código javascript e uma consulta no banco de dados está lá na view. E você quer mudar somente o visual do site. É caro amigo, com isso tudo, você conseguirá uma bela dor de cabeça... Pois de uma camada que seria necessária alterar, você deverá, em alguns casos, alterar as 3. Isso é um sistema inflexível. Você nunca poderá alterar nada nele, sem dependências em outras camadas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu falei:

 

 

Significa programar dentro de um padrão especificado e não o sistema ficar preso a implementação. Não confunda programar com inflexibilidade com criar uma aplicação inflexível.

 

Se você for estudar Design Patterns, verá que os padrões são, de certa forma, inflexíveis e tornam sua aplicação flexível. Entendeu a diferença?

 

 

 

Java é uma linguagem inflexível. Não significa que as aplicações serão. Logo, ele é inflexível dentro de um padrão.

Gostei da sua explicação, entendi a lógica da coisa, e também desenvolvo utilizando MVC, acho lindo! kkkkkk :clap:

Mas você disse que um sistema inflexivel em exemplo da manutenção, teria que alterar nas 3 camadas, beleza. Mas depois dessa afirmativa, fiquei na dúvida quanto a outra afirmativa sua (logo acima no quote). Poderia me explicar?

 

Pelo que entendi, seria correto afirmar que:

- programar com inflexibilidade seria ter objetos do sistema em que sua aplicação não fique amarrada somente naquele padrão? Em que, se por ventura quiser fazer algo diferente,terá de mudar muita coisa por baixo dos panos pois ficaria muita gambiarra com as novas mudanças do código?

 

- aplicação fléxivel é no caso da sua explicação, na separação de camadas, onde torna-se a manutenção bem flexível e fácil, pois não terá que mexer em outras partes do sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites
- aplicação fléxivel é no caso da sua explicação, na separação de camadas, onde torna-se a manutenção bem flexível e fácil, pois não terá que mexer em outras partes do sistema.

Correto.

 

terá de mudar muita coisa por baixo dos panos pois ficaria muita gambiarra com as novas mudanças do código

Isso seria uma aplicação inflexível e não programar com inflexibilidade.

 

Uma programação, ou linguagem de programação, inflexível, não garante que você tenha uma aplicação flexível. Mas é o melhor caminho. Como o o @Rodrigo Ceschi comentou:

Conheço muitos "causos" de gente que conseguiu fazer gambiarra até em frameworks Java

Java é uma linguagem pouco flexível. Logo, tem de se seguir muitas regras. Mas isso não evita fazer "gambiarras". Só que, quanto mais flexível for a linguagem de programação, mais fácil será fazer gambiarras.

 

Programar com inflexibilidade, ao meu ver, é , como diria Robert "UncleBob" Martin sobre o profissional, "[...]ter honra e ser sincero consigo mesmo[...]". Você só vai conseguir ter uma boa aplicação, se seguir as regras e ir passo a passo ao objetivo. Caso você não seguir as regras, você está sendo flexível. Se for flexível demais, as chances de criar um "monstro" aumentam exponencialmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem a discussão já está bem profunda... vou apenas relatar minha experiência utilizando o Zend...

 

Utilizo o Zend a 8 meses, e estou desenvolvendo uma aplicação de grande porte no mesmo...

 

Os resultados de performance são satisfatórios já que manipulo uma massa de dados dentro da aplicação de 220Gb

 

Zend_Db -> Não me atendeu muito bem neste projeto não pelo Zend mas sim uma limitação para o aparelho que estou desenvolvendo.

 

Utilizo Views, Grid... E estou muito satisfeito.

 

Sem muitos detalhes... É isso!!!

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
[...]manipulo uma massa de dados dentro da aplicação de 220Gb[...]

Por curiosidade, quais tipos de dados (arquivos/código) envolve essa massa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

dizer q o zend nao tem bom ORM foi sacanagem, quantas classes ele tem q da pra usar no db? zend_db, zend_db_table, zend_db_tablerow etc..deve ter umas 4, eu uso o padrao db table row, mas se olhar bem como o zend eh flexivel, da pra você criar seu active record, o ponto fraco q acho dele, eh q você precisa conhecer bem oo e padroes de projet (design patterns), digo isto pois 3 anos atras eu tentei usa-lo, sem sucesos, hj depois de construir um mini framework, e estudar melhor oo e design patterns, consigo usa-lo sem grilo nenhum, claro q ele tem os pulos do gato, mas, eu nao tive didiculdade hj, depois de estudar oo, na epoca eu pensava q usar e criar classes era oo e na verdade nao eh...ha muita interacao por tras...

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.