Sou desenvolvedor web e tenho experiência no desenvolvimento de várias aplicações web em PHP. Eu tenho uma idéia de desenvolver um produto para mim e decidi usar uma estrutura baseada em MVC, porque eu realmente gosto da idéia de MVC e como alguém pode gerenciar e modificar facilmente o aplicativo sem nenhuma dificuldade.
Eu escolhi o Zend Framework e parece mais difícil do que aprender uma nova linguagem de programação. Existem muitas coisas acontecendo ao mesmo tempo para executar um aplicativo pequeno.
Da mesma forma, a idéia de roteamento é muito complexa, pois é nova para um programador principal. Eu sei que os caras daqui leem milhares de perguntas como uma que estou fazendo, mas não estou procurando aprender o Zend Framework da noite para o dia. Estou disposto a dedicar o tempo que for necessário, mas até agora não faz sentido para mim. Existem milhares de classes na biblioteca do Zend, mas como um noob saberia onde usar uma classe específica e como usá-la? Ainda estou achando muito difícil entender o bootstrap do Zend Framework e seu mapeamento. Leio o manual, sigo-o e as coisas começam a funcionar, mas realmente não sei exatamente como elas estão acontecendo.
Também não tenho idéia de como modelos, visualizações e controladores funcionam juntos e como planejar um aplicativo no Zend Framework. Quando se trata de php principal, eu tenho exatamente a idéia em mente o que fazer e depois traduzo-os facilmente em código, mas no Zend Framework eu não sei como traduzir minha idéia.
fonte
Respostas:
O Zend Framework é difícil. Não foi construído como uma estrutura básica, o conhecimento dos conceitos envolvidos é assumido 1 . Dito isto, o primeiro requisito para o Zend Framework 2.0 é facilitar um pouco:
Portanto, não é apenas você, é difícil para todos - leia toda a página da wiki, existem algumas coisas que são identificadas como desnecessariamente complexas. Mas, mesmo que o requisito acima seja cumprido, ele ainda não se tornará uma estrutura de nível básico, o que significa que não é uma estrutura que você deve aprender, mas que você deve usar quando entender os conceitos envolvidos.
Como você ainda está aprendendo, seria muito mais valioso criar sua própria arquitetura MVC. O notório post de 2 de Rasmus Lerdorf, " O framework MVC PHP MVC ", fornece um exemplo muito simples e limpo de MVC por meio de PHP processual, sem nenhuma estrutura ou outra biblioteca de terceiros envolvida.
Mas se você realmente deseja aprender com uma estrutura, considere uma micro estrutura em vez de uma completa. O Slim tem uma base de código muito pequena, limpa e completamente testada e deve ser ideal para o aprendizado. Eu não brinquei com nenhum outro micro framework, você deve fazer sua própria pesquisa e decidir qual é o melhor para você.
E para uma introdução rápida e suja ao roteamento, veja minha resposta a esta pergunta . Não é um conceito muito difícil de entender, mas o Zend Framework faz com que pareça muito mais do que realmente é .
1 A melhor descrição que li para o ZF é que é uma estrutura de construção de estruturas , não uma estrutura de aplicativos. É poder bruto e lista extrema de recursos não são adequados para sites pequenos e médios. Infelizmente, não consigo encontrar onde li isso.
2 Leia o aviso na parte superior da postagem do blog.
Atualização, inspirada no comentário de @ Karpie:
Uma estrutura não deveria ser difícil, o objetivo de uma estrutura é facilitar as coisas. É possível que, mesmo com uma compreensão firme dos conceitos envolvidos, o ZF não seja adequado para você.
Existem muitos fatores subjetivos envolvidos na escolha de uma estrutura, e, a menos que qualquer outra estrutura não possua a funcionalidade absolutamente necessária - e não possa escrever por conta própria, você deve evitar o ZF e usar uma estrutura que lhe pareça mais natural.
Se você conhece os conceitos, a estrutura não deve atrapalhar.
fonte
Eu não gostei da falta de descoberta quando comecei a usar o Zend Framework, muitas classes dependem de matrizes e você precisa procurar quais chaves você pode / precisa definir.
Não há nada de errado em ter métodos de conjunto claros ou parâmetros nomeados, isso ajudaria muito na descoberta.
A estrutura do Yii é ainda pior com esse tipo de coisa.
fonte
Alguns problemas com o ZF, que tornam irritante (e difícil para iniciantes) trabalhar com:
ORM não incluído . Poder-se-ia pensar que isso deveria ser a base da estrutura moderna do MVC, mas o ZF é fornecido apenas com
Zend_Db_Table
um nível ridiculamente baixo. Você pode usar o Doctrine, mas depois fica por conta própria, não está de forma alguma integrada ao ZF.Roteadores de URL inchados e ilegíveis . Por exemplo, são necessárias 9 linhas de código para definir o roteamento mais simples:
Dada a quantidade de perguntas relacionadas a isso , tudo é simples para a maioria das pessoas. Além disso, não posso ajudá-lo e compará-lo com o Django, onde o equivalente acima seria
Zend_Acl
é muito complicado para a maioria dos casos de uso. Normalmente você teria autenticação para identificar o usuário. E uma opção para limitar facilmente o acesso a alguns controladores apenas a usuários autenticados. Para muitos casos de usuários, isso é suficiente. Para casos mais complicados, caberia à lógica comercial do controlador determinar se o usuário tem permissões para executar determinada ação. No ZF, você não tem a opção de limitar facilmente o acesso apenas a usuários autenticados; a maneira padrão é usar o ACL e o sistema de funções, independentemente de quão simples seja sua necessidade.Diretório inchado e layout de arquivo . A estrutura de diretórios recomendada é assim:
fonte
O Zend Framework é como um monte de bibliotecas independentes que juntas funcionam como um framework. É muito difícil desenvolver algo ao mesmo tempo dissociado e "fácil de usar". Para "fácil de usar", quero dizer coisas complexas com poucas linhas de código.
Portanto, começar com o Zend é mais difícil que outros frameworks, como o CakePHP. Mas também é mais fácil estender e personalizar seu aplicativo sem códigos sujos. O Zend também segue padrões e padrões de design em todo o código; portanto, depois de ler o código da estrutura, você pode adivinhar o que está acontecendo.
Quando você diz que não tem idéia de como modelos, visualizações e controladores funcionam juntos, por favor, não culpe a estrutura. Ele implementa o MVC como qualquer outra estrutura, exceto que separa o modelo da estrutura do banco de dados, que em muitas estruturas é implementada na mesma classe. Então você vai enfrentar muitas classes como Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, etc ...
É por isso que acho que o Zend Framework é mais complicado, porque é muito dissociado e você pode usar suas classes em outros projetos que não usam o ZF.
fonte
O Zend Framework requer uma sólida base em OOP e Design Patterns. Pela minha experiência, só encontro programadores experientes em Java-JEE-Struts-Spring que se familiarizam facilmente com o Zend Framework. O desenvolvedor PHP médio acha difícil digerir os conceitos e a arquitetura por trás do Zend Framework. Mas veja ei! O Zend Framework vem da empresa 'Zend', que cria o PHP em primeiro lugar. Por isso, é necessário pensar um pouco, se não respeitar!
fonte
Eu acredito que o zend é apenas para complicar as coisas, o MVC é apenas uma fraude logicamente, está funcionando como PHP simples. mas você o está desenvolvendo na frente do MVC, como separar arquivos em diretórios diferentes.
Lembre-se de que quem está dizendo que o Zend é muito seguro e incapaz de invadir é um grande tolo. O Zend também pode invadir facilmente se você não usou as proteções de injeção do Mysql. Gostaria de sugerir que você defina suas próprias funções e, em seguida, separe seus arquivos em diretórios diferentes para torná-lo semelhante, como o MVC, salve suas funções, classes e outros materiais essenciais em um diretório chamado controller e adicione suas páginas da Web em diretórios diferentes, onde você precisar para incluir todos os arquivos de funções que este diretório conhecerá como visualização. coloque seus arquivos javascript e css em diferentes diretórios, conhecidos como modelo.
Lembre-se de que, neste mundo, muitas pessoas sempre trabalham duro para tornar as coisas mais complicadas, porque são elas mesmas complicadas de entender.
PHP é a linguagem que você aprendeu no livro e com os professores. O Zend não é apenas uma estrutura, para complicar as coisas para seus clientes. portanto, sempre que houver necessidade de alguma modificação, o cliente retornará aos desenvolvedores reais e esses desenvolvedores cobrarão mais dinheiro. O Zend está protegido, é apenas uma mentira, um único erro, como a codificação php simples, pode causar a invasão do site.
fonte
Pelo menos a coisa "início rápido" deve ser mais fácil para tornar um framework amigável ..... se você preferir algo mais difícil como uma coisa melhor, eu diria "ZF é o melhor framework PHP", caso contrário, NÃO. Eu baixei o ZF-2 e experimentei (honestamente sou novato na ZF). O triste é que eu ainda não encontrei um "guia de início rápido" sólido com um simples esqueleto de projeto na internet. Tudo o que estou procurando é uma maneira simples de incluir arquivos de biblioteca e criar uma pasta de projeto com os recursos do MVC. Eu usei Codeigniter, Cake php, Yii, mas eu achei muito hostil. Sim, eu sei que o Zend atualiza o PHP, mas isso não significa que seja a melhor estrutura ou o que você dirá.
fonte