Por que o Zend Framework é tão complicado?


42

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.


10
Se você é novo no MVC, implemente um andaime MVC antes de usar qualquer um dos mais completos - eles não são bons para aprender.
treecoder

2
@greengit foi o que eu fiz!
Kyle Hodgson

O Zend Framework não é difícil, requer um pouco de tempo para aprender, devido à documentação ruim, mas posso garantir que é um framework muito poderoso. Criamos grandes softwares corporativos no ZF2, e a flexibilidade na configuração é extraordinária no ZF.
Albanx #

Respostas:


38

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:

Facilite a curva de aprendizado

No final de 2009, fizemos uma pesquisa com os usuários da estrutura para determinar o que eles usam, quais ambientes eles usam e quais são suas necessidades. A questão principal, sem exceção, foi a dificuldade de aprender a estrutura. Alguns desses problemas incluem:

  • Dificuldade na "primeira hora" com o framework.
  • Incerteza sobre os "próximos passos" após o início rápido.
  • APIs inconsistentes no próprio código-fonte. Um componente pode usar "plugins", outro "auxiliares" e ainda outro "filtro".
  • Incerteza sobre onde existem pontos de extensão e como programar para eles.
  • Confusão sobre se eles podem usar o Zend Framework apenas como uma pilha MVC ou como componentes individuais.

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.


3
Mesmo com o conhecimento dos conceitos, é muito difícil entrar e, para ser sincero, acho que não vale a pena o esforço. A documentação geralmente está errada, exemplos na Web depois de desatualizados, o canal de suporte do IRC geralmente está inoperante e, pelo que vi, não há outro lugar para obter suporte.
sevenseacat 6/12/11

@ Karpie Não acho difícil, para ser sincero. Mas é meio idiomático, então definitivamente encaixa alguns desenvolvedores melhor que outros. Por exemplo, acho mais fácil entender que o CodeIgniter, mas isso é apenas por causa do meu processo pessoal: prefiro ler código do que documentação e o código da CI é tão cheio de porcaria que minha mente se cala. Porém, para a maioria dos desenvolvedores, o IC é muito mais fácil de aprender do que o ZF, e nem todos concordam que o código do CI está cheio de porcaria. O importante é que não é difícil usar uma estrutura, se houver sempre outras por aí.
yannis

Acho que o Zend Framework 1 é relativamente fácil de entender. Mas você disse que a ideia por trás do ZF2 era facilitar , acho que é muito mais complexo do que nunca.
usar o seguinte código

Tudo no ZF2 é excessivamente complicado. Seria bom apresentar o "framework" do Zend como uma coleção de módulos / bibliotecas. A estrutura atual está ausente. Não há camada de modelo, então você precisa implementar sua própria, que geralmente é uma bagunça ou usar o Doctrine, que requer alguma integração. Para escrever alguns testes de unidade, você precisa gastar um tempo ridículo decifrando o manual e escrevendo (ou tentando encontrar online) algum código apenas para inicializar seus testes. Embora possa ser construído em torno de conceitos sólidos, sua interpretação desses conceitos é terrível.
precisa saber é o seguinte

11

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.


3
+1 Meu motivo significativo para não considerar seriamente a aceitação do ZF / ZF2 deve ser as configurações feias, de conclusão / sugestão automática e esquivadas inteli-sense, esquivando-se de matrizes. Isso viola minha aversão pessoal ao uso excessivo de matrizes em um mundo OO.
Gavin Howden

1
Precisamente minha opinião também.
21413 Daniel

Não acho o Yii 1 muito difícil. Talvez seja para mim. : P
Eugine Joseph 15/01

5

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_Tableum 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:

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

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

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

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:

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/

4

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.


3

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!


1
Rasmus Lerdorf criou o php, o zend é um grande defensor do php. Pelo que me lembro.
Sarmen B.

Não posso discordar lá. Sou desenvolvedor Java. Eu não apenas encontrei o ZF facilmente, mas o preferi a outros frameworks.
Jkushner 27/10/16

-2

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.


-6

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á.


continue detestando .... LOL
Ram
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.