Por que o Zend Framework é tão complicado?

42

Sou desenvolvedor web e tenho experiência no desenvolvimento de vários aplicativos da web em PHP. Eu tenho uma idéia de desenvolver um produto para mim e decidi usar um framework baseado em MVC porque eu realmente gosto da idéia do MVC e como alguém pode facilmente gerenciar e modificar o aplicativo sem qualquer dificuldade.

Eu escolhi o Zend Framework e parece mais difícil do que aprender uma nova linguagem de programação. Há tantas coisas acontecendo ao mesmo tempo até mesmo para executar um pequeno aplicativo.

Da mesma forma, a idéia de roteamento é muito complexa, pois é nova para um programador principal. Eu sei que os caras aqui leram milhares de perguntas como uma que estou perguntando, mas não estou querendo aprender Zend Framework durante a noite. Estou disposto a dar 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 sabe onde usar uma classe específica e como usá-la? Eu ainda estou achando muito difícil entender o bootstrap do Zend Framework e seu mapeamento. Eu li o manual, segui-lo e as coisas começam a funcionar, mas eu realmente não sei exatamente como elas estão realmente acontecendo.

Eu ainda não tenho ideia de como modelos, visualizações e controladores trabalham juntos e como planejar um aplicativo no Zend Framework. Quando se trata de core php, eu tenho exatamente a ideia em mente sobre o que fazer e do que traduzi-los facilmente no código, mas no Zend Framework não sei como traduzir minha ideia.

    
por Umair Abid 06.12.2011 / 06:26
fonte

7 respostas

38

O Zend Framework é difícil. Não foi construído como um framework de nível de entrada, o conhecimento dos conceitos envolvidos é assumido 1 . Dito isso, o primeiro requisito para o Zend Framework 2.0 é tornar um pouco mais fácil:

Ease the learning curve

In late 2009, we did a survey of framework users to determine what they use, what environments they use, and what their needs are. The top issue, bar none, was the difficulty of learning the framework. Some of these issues include:

  • Difficulty in the "first hour" with the framework.
  • Uncertainty about the "next steps" following the quick start.
  • Inconsistent APIs in the source code itself. One component may use "plugins," another "helpers," and yet another "filters."
  • Uncertainty about where extension points exist, and how to program for them.
  • Confusion over whether they can use Zend Framework only as an MVC stack or as individual components.

Portanto, não é só 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á um framework de nível de entrada, o que significa que não é um framework no qual você deveria estar aprendendo, mas um que você deveria estar usando quando entendeu os conceitos envolvidos. / p>

Como você ainda está aprendendo, seria muito mais valioso construir sua própria arquitetura MVC. Rasmus Lerdorf notório 2 " A estrutura sem framework PHP MVC "post no blog fornece um exemplo muito simples e limpo de MVC através de PHP procedural, sem nenhum framework ou outra biblioteca de terceiros envolvida.

Mas se você realmente quiser aprender com um framework, você deve considerar um micro framework em vez de um completo. 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ê deveria fazer sua própria pesquisa e decidir qual é o melhor para você.

E para uma introdução rápida e suja ao roteamento, consulte minha resposta para esta pergunta . Não é um conceito muito difícil de entender, mas o Zend Framework faz com que pareça muito muito mais do que na verdade é .

1 A melhor descrição que li para o ZF é que é uma estrutura de construção de framework , não uma estrutura de aplicativo. Seu 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 no topo da postagem do blog.

Atualização, inspirada no comentário de @ Karpie:

Um framework não deve ser difícil, o objetivo de um framework é facilitar as coisas. É possível que, mesmo com uma compreensão firme dos conceitos envolvidos, a ZF não seja uma boa opção para você.

Existem muitos fatores subjetivos envolvidos na escolha de um framework, e a menos que qualquer outro framework careça de funcionalidade que você absolutamente precisa - e não pode escrever sozinho, você deve evitar o ZF e usar um framework que pareça mais natural para você .

Se você conhece os conceitos, o framework não deve atrapalhar.

    
por 06.12.2011 / 06:57
fonte
11

Eu não gostei da falta de visibilidade quando comecei a usar o Zend Framework, muitas classes dependem de arrays e você precisa procurar quais teclas você pode / precisa definir.

Não há nada de errado em ter métodos definidos claros ou nomeados params, isso ajudaria na descoberta.

A estrutura do Yii é ainda pior com esse tipo de coisa.

    
por 06.12.2011 / 15:37
fonte
5

Alguns problemas com o ZF, que tornam irritante (e difícil para iniciantes) trabalhar com:

ORM não incluído . Alguém poderia pensar que isso deveria ser uma base muito moderna do framework MVC, mas o ZF só vem com Zend_Db_Table , que é ridiculamente baixo nível. Você pode usar o Doctrine, mas você está sozinho, não está de forma alguma integrado com o ZF.

Roteadores de URL ilegíveis e inchados . 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 menos simples para a maioria das pessoas. Além disso, não posso ajudá-lo e compará-lo ao Django, onde o equivalente acima seria

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

Zend_Acl é 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 de negócios no controlador determinar se o usuário tem permissões para executar determinada ação. Na 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 é realmente sua necessidade.

Diretório e layout de arquivo sobrecarregados . Estrutura de diretórios recomendada é semelhante a:

<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/
    
por 29.04.2013 / 17:44
fonte
4

O Zend Framework é como um monte de bibliotecas independentes que juntas funcionam como um framework. É muito difícil desenvolver algo ao mesmo tempo desacoplado e "fácil de usar". Para "fácil de usar", quero dizer fazer coisas complexas com poucas linhas de código.

Então, começar com o Zend é mais difícil do que outros frameworks, como o CakePHP. Mas também é mais fácil ampliar e personalizar seu aplicativo sem códigos sujos. O Zend também segue padrões e padrões de design em todo o seu código, então, uma vez que você leia o código do framework, você pode adivinhar o que está acontecendo.

Quando você diz que não tem ideia de como modelos, visualizações e controladores trabalham juntos, por favor, não culpe a estrutura. Ele implementa o MVC como qualquer outro framework, exceto que ele separa o modelo da estrutura do banco de dados, que em muitos frameworks são implementados 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 desacoplado e você pode usar suas classes em outros projetos que não usam o ZF.

    
por 06.12.2011 / 22:04
fonte
3

O Zend Framework requer alguma base sólida em OOP e Design Patterns. Pela minha experiência, eu só encontro experientes programadores Java-JEE-Struts-Spring que facilmente se familiarizam com o Zend Framework. O desenvolvedor médio de PHP 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. Então, é preciso pensar um pouco, talvez se não respeitar!

    
por 27.02.2012 / 20:15
fonte
-2

Eu acredito que o zend é apenas para complicar as coisas, o MVC é apenas uma fraude logicamente, funcionando como o PHP simples. mas você está desenvolvendo isso na frente do MVC, como separar arquivos em diretórios diferentes.

Lembre-se que quem está dizendo que o Zend é muito seguro e incapaz de hackear é um grande tolo. O Zend também pode hackear facilmente se você não usar as proteções de injeção Mysql. Gostaria de sugerir que você defina suas próprias funções, em seguida, separe seus arquivos em diretórios diferentes para torná-lo semelhante ao MVC salve suas funções, classes e outros materiais essenciais em um diretório chamado controller em seguida, adicione suas páginas da web no diretório diferente, onde você precisa incluir todos os arquivos de funções que esse diretório saberá como visualização. coloque seus arquivos javascript e css em diretórios diferentes que serão 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 língua que você aprende no livro e dos professores. Zend não é nada apenas um framework, para complicar as coisas para seus clientes. Assim, sempre que o cliente precisar de alguma modificação, ele voltará para os desenvolvedores reais e os desenvolvedores cobrarão mais dinheiro. Zend é protegido é tudo apenas mentira, um único erro como codificação PHP simples pode causar o site hackable.

    
por 29.04.2013 / 13:54
fonte
-6

Pelo menos o "quick start" deve ser mais fácil para fazer um framework amigável ... se você preferir algo mais difícil como uma coisa melhor, então eu diria "ZF é o melhor framework PHP", senão NÃO . Eu baixei o ZF-2 e o testei (honestamente eu sou novato na ZF). O mais triste é que eu ainda não encontrei um sólido "guia de início rápido" com um simples Project Skeleton na internet. Tudo o que estou procurando é uma maneira simples de incluir arquivos de biblioteca e criar uma pasta de projeto com 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 ele seja o melhor framework ou o que você disser.

    
por 10.10.2012 / 14:27
fonte