Autor: heiyeluren
Blog: http://blog.csdn.net/heiyeshuwu
Horário: 5/5/2008
Recentemente, simplesmente usei várias estruturas PHP estrangeiras convencionais (excluindo estruturas domésticas) que são usadas atualmente na China. Tenho uma sensação intuitiva sobre essas estruturas que gostaria de compartilhar brevemente, quais devem ser usadas ao selecionar estruturas. como referência.
Os principais frameworks de referência incluem: CodeIgniter, CakePHP, ZendFramework e Symfony.
Nota: não usei muitos frameworks seriamente, apenas os experimentei brevemente. :-)
【CodeIgniter】
Site oficial: http://codeigniter.com
Site chinês: http://codeigniter.org.cn
Manual chinês: http://codeigniter.org.cn/user_guide
Tutorial em vídeo: http://codeigniter.org.cn/tutorials
Versão de teste: CodeIgniter_1.6.1
Vantagens:
1. A configuração é simples, todas as configurações são configuradas usando scripts PHP e a eficiência de execução é alta; possui funções básicas de roteamento e pode executar o roteamento até certo ponto; possui funções de layout preliminares e pode criar um certo nível de aparência da interface; a camada de banco de dados é bem encapsulada, com funcionalidades básicas do MVC;
2. Rápido e conciso, pouco código, alto desempenho de execução, estrutura simples, fácil de usar, baixo custo de aprendizado, documentação detalhada, vem com muitas bibliotecas simples e fáceis de usar e a estrutura é adequada para pequenas aplicações
; Desvantagens:
1. Simplesmente entenda a camada Modelo como operações de banco de dados
2. A estrutura é um pouco simples e só pode atender às necessidades de pequenas aplicações, mas é um pouco menos capaz de atender às necessidades de aplicações de médio porte
.
De modo geral, vale a pena usar o CodeIgniter para completar aplicações simples e rápidas. Ao mesmo tempo, ele pode construir um certo grau de layout para facilitar a reutilização de modelos. A camada de operação de dados é bem encapsulada e o CodeIgniter não usa muitos. padrões de design muito complexos. Tanto o desempenho quanto a legibilidade do código são bons. Quanto à biblioteca adicional, também é muito boa, simples e eficiente.
【CakePHP】
Site oficial: http://www.cakephp.org
Manual chinês: http://www.1x3x.net/cakephp
Tutorial em vídeo: http://search.you.video.sina.com.cn/s?key=cakephp
Versão de teste: cake_1.1.19.6305
Vantagens:
1. CakePHP é o framework mais semelhante ao RoR, incluindo o método de design e o método Active Record de operação do banco de dados, o nível de design é muito elegante, não vem com bibliotecas extras, todas as funções são frameworks puros e a eficiência de execução é; nada mal; a camada de banco de dados As funções hasOne e hasMany são muito poderosas e adequadas para processamento de negócios complexos; a função de roteamento e a função de configuração não são ruins, o andaime automático (scaffold) é muito poderoso; cada camada do MVC e possui função de script de linha de comando de operação automática;
2. A documentação é relativamente completa e foi promovida com sucesso na China. A maioria das pessoas conhece o CakePHP. O custo de aprendizado é médio
.
1. Um problema muito sério com o CakePHP é que ele entende Model como uma operação da camada de banco de dados, o que afeta seriamente sua capacidade de operar além do banco de dados.
2.
A função de cache do CakePHP é um pouco fraca e sua função de configuração é um pouco fraca. O CakePHP não é adequado para aplicativos de grande escala, mas apenas para aplicativos de médio porte. O custo de aprendizado é um pouco maior para aplicativos de pequena escala.
De modo geral, o framework CakePHP representa uma era muito importante e representativo do framework PHP, e atualmente desempenha um papel muito importante. Muitos frameworks auto-escritos imitam o método CakePHP, que é um produto de referência que revela os métodos de desenvolvimento RoR Agile; a filosofia de design de considerar as operações de banco de dados como o único modelo são excelentes ferramentas para o desenvolvimento de aplicações e protótipos rápidos; da mesma forma, também vale a pena escolher como estrutura de desenvolvimento para sites Web 2.0;
【Zend Framework】
Site oficial: http://framework.zend.com
Manual chinês: http://www.phpeye.com/zf
Tutorial em vídeo: http://framework.zend.com/docs/screencasts
Versão de teste: ZendFramework-1.5.0
Vantagens:
1. Produzido oficialmente, ele vem com muitas bibliotecas. O próprio framework é escrito usando vários padrões de design. A arquitetura é muito elegante e a eficiência de execução é média. O design MVC é relativamente simples, possui funções de roteamento e o arquivo de configuração. é relativamente poderoso (pode lidar com XML e php INI), várias bibliotecas são muito poderosas e possuem as funções mais abrangentes entre todos os frameworks PHP, incluindo o fato de não ser apenas um framework, mas também uma grande biblioteca de classes (substituindo PEAR). sua principal característica; ele pode suportar intuitivamente a camada Model além das operações de banco de dados (mais forte que CodeIgniter e CakePHP), e pode facilmente usar a função Loader para carregar outras classes recém-adicionadas, a função Cache é muito poderosa e é suportada pelo. Cache front-end para o cache back-end O cache do terminal suporta Memcache, APC, SQLite, arquivos, etc., a função de operação do banco de dados é muito poderosa e suporta vários drivers (adaptadores);
2. A documentação é muito completa, a comunidade nacional é muito madura e atualmente é utilizada por muitos sites da Web 2.0, e o custo de aprendizagem é médio
.
1. A função MVC é relativamente fraca, a camada View é simplesmente implementada (assim como não é implementada) e não pode controlar a página front-end de maneira muito poderosa.
2. Não existe um script automatizado. Para criar um aplicativo, incluindo o arquivo de entrada, você deve construí-lo manualmente.
3. Zend Framework não é um grande problema como framework de aplicativos de médio porte e mal pode ser usado como framework para aplicativos de grande escala. No entanto, como um framework PHP de grande escala muito maduro, ainda precisa de alguns esforços
para ser desenvolvido. avaliar:
Como uma estrutura produzida oficialmente, as ambições do Zend Framework são previsíveis. Ele deseja excluir outras estruturas e, ao mesmo tempo, encapsular muitas bibliotecas de classes poderosas para fornecer serviços de estrutura completos. a capacidade de desenvolver produtos muito poderosos, é basicamente certo que o Zend Framework terá um futuro brilhante se for gasto mais tempo para melhorar o framework. Da mesma forma, a arquitetura do Zend Framework em si é relativamente elegante, o que mostra que o Zend tem oficialmente muitos especialistas e é relativamente avançado em conceitos de design. Embora algumas funções não estejam totalmente implementadas, como a camada View, scripts de automação, etc., todas elas dependem. na atualização futura. De modo geral, Zend Framework é o framework mais esperado. Claro, não há problema se você quiser utilizá-lo em seus projetos agora.
【Symfony】
Site oficial: http://www.symfony-project.org
Site chinês: http://symfony-project.cn
O Guia Definitivo: http://www.symfony-project.org/book
Referência de aprendizagem: http://sf.thecodecentral.com
Versão de teste: symfony-1.0.13
Vantagens:
1. Symfony é o framework PHP mais poderoso que conheço, e já o uso há muito tempo, mas muitas funções ainda não foram descobertas, ele implementa completamente as três camadas do MVC e encapsula tudo, incluindo $_POST, $_GET; Dados, tratamento de exceções, função de depuração, detecção de dados; inclui função de cache poderosa, carregamento automático de classe (esta função é muito legal), suporte poderoso à nacionalização i18n tem operação de camada de visualização muito poderosa e pode conter vários arquivos de maneira fragmentada; Função de configuração muito poderosa. Usar a configuração yml pode controlar todos os frameworks e comportamentos de execução do programa, o que é tão poderoso que deixa as pessoas sem palavras, você pode definir várias classes à vontade, e o symfony pode carregar automaticamente (carregar automaticamente) essas classes; que pode ser usado em Pode ser chamado à vontade no programa; inclui poderoso gerenciamento de projetos e aplicativos em vários níveis: Projeto -> Aplicativo -> Módulo -> Ação, que pode atender às necessidades de vários aplicativos em um projeto, e cada camada pode definir sua própria biblioteca de classes, layout de funções de operação de linha de comando muito poderosas, incluindo construção de projetos, construção de aplicativos, construção de módulos, atualização de cache, etc.;
2. Symfony é definitivamente a primeira escolha para o desenvolvimento de projetos grandes e complexos, porque o uso do Symfony economizará muito nos custos de desenvolvimento e não haverá problemas quando várias pessoas colaborarem. Depois que a classe básica for definida no nível do projeto, qualquer módulo poderá ser. reutilizado. Desvantagens de reutilizar muito o código
:
1. O modelo de operação do banco de dados usa prop pesado e crioulo, mas na versão que testei, eles foram movidos para addon. Eles podem ser usados ou não.
2. A função de cache não pode ser controlada. O cache é sempre armazenado em cache durante o desenvolvimento e depuração. Você precisa executar symfony cc e symfony rc para limpar e reconstruir o cache;
3. A eficiência não é muito alta, principalmente o processo de análise de templates e leitura de arquivos de configuração, que leva muito tempo;
4. O custo de aprendizagem é muito alto e não existe uma comunidade e documentação madura na China, nem mesmo um manual chinês. Conseqüentemente, leva muito tempo para dominar todas as funções e
avaliar:
Symfony é definitivamente uma estrutura de nível empresarial, a única coisa que aparentemente pode competir com as estruturas poderosas no campo Java. Coisas poderosas são naturalmente complicadas de aprender, mas também são úteis para o desenvolvimento de projetos. Naturalmente, é recomendado usar o Symfony. para projetos complexos, acho que vale a pena. O custo de manutenção na fase posterior é relativamente baixo e a reutilização é muito forte. Da mesma forma, se você usar o Symfony para projetos de Internet mais complexos, deverá considerar a questão da distribuição do banco de dados. Em seguida, você precisará abandonar a camada de operação do banco de dados que vem com o Symfony e defini-la você mesmo. Claro, o Symfony suporta a construção arbitrária da camada de modelo.
[Comentário geral]
Os frameworks acima têm características próprias e são todos projetos de código aberto. No entanto, os projetos visados pelos frameworks são diferentes. De modo geral, CodeIngiter é mais adequado para projetos pequenos, CakePHP e Zend Framework são mais adequados. projetos de médio porte, e o Symfony é mais adequado para projetos grandes e pesados. Ao selecionar projetos, você deve considerar totalmente a customização e escalabilidade da estrutura, porque cada projeto não pode determinar se você fará alterações conforme suas necessidades mudam.
Relativamente falando, Zend Framework e Symfony têm uma forte capacidade de lidar com mudanças, especialmente as classes na camada de modelo que podem ser customizadas à vontade, tornando muito conveniente adicionar suas próprias classes de negócios ou de processamento de dados. Eu pessoalmente recomendo essas estruturas para. uso em projetos de médio e grande porte. CodeIngiter e CakePHP também podem desempenhar um papel significativo em projetos de pequeno e médio porte, desenvolvimento rápido e construção de protótipos, e são muito adequados para o desenvolvimento de projetos de protótipos com objetivos pouco claros. A melhor maneira de entender um framework é usá-lo, e a melhor maneira de aprendê-lo é assistindo a vídeos. :-)
Pessoas benevolentes têm opiniões diferentes e pessoas sábias têm opiniões diferentes Ao selecionar uma estrutura para um projeto, examine cuidadosamente as necessidades do projeto e as mudanças futuras e, em seguida, escolha uma estrutura apropriada para alcançar um equilíbrio razoável entre a velocidade de desenvolvimento do projeto e. manutenção posterior. Claro, talvez seja mais adequado escrever você mesmo uma estrutura. :-)
Fiz uma avaliação geral de vários frameworks, acho que muitas coisas não estão corretas, então vou deixar por isso mesmo. Comentários e correções também são bem-vindos!