Banner Curso de PHP

Experiência do Uso de PHP em Grandes WebSites

Adaptação e tradução para português do artigo originalmente publicado por Aaron Crane da GBDirect (aaron.crane@gbdirect.co.uk)

1. Introdução

A linguagem PHP experimentou um enorme crescimento em popularidade nos últimos anos. Dentre os principais benefícios que a levaram a isso, destacam-se a facilidade de "pegá-la" e o fato de ter sido concebida como uma linguagem especificamente para o desenvolvimento de páginas web. Isso significa que a escolha de PHP como linguagem de aplicação permite que você crie uma página dinâmica rapidamente e facilmente.

No entanto, não está claro o quão bem o PHP escala para uso em grandes sites comerciais. Este artigo analisa os problemas na tentativa de se fazer isso. Os assuntos abordados incluem: 

- Separação da camada de apresentação da lógica de negócios 
- Usando uma equipe de desenvolvedores para construir um site 

A conclusão a que chegamos é que, em algumas circunstâncias, pelo menos, a tendência do PHP para criar mais problemas do que resolvê-los torna-o uma escolha inadequada. No entanto, também reconhecemos que existem algumas situações em que o PHP pode e DEVE ser utilizado como solução. Para aqueles que se encontram em tais situações, nós usamos as liçoes aprendidas com a utilização do PHP em uma série de sites (incluindo o motor de busca geográfica somewherenear.com e um multi-milionário site de comércio electrónico na indústria de conservas) para oferecer alguma orientação sobre a melhor forma de lidar com as deficiências desta linguagem.

Finalmente, nós identificamos uma lista de questões pertinentes para determinar a adequação do PHP como solução para um determinado projeto.

2. Separação da Apresentação da Camada de Negócios

Espera-se que websites modernos sejam capazes de reagir rapidamente às novas exigências (leia-se mudanças de requisitos e novas versões). Para os desenvolvedores, isso se traduz em uma necessidade de ser capaz de mudar o conteúdo e a aparência de um site com o mínimo esforço. É consenso hoje que a maneira mais eficaz de responder a esta necessidade é a execução de uma separação da camada de apresentação (o olhar puramente estético de um site) da lógica de negócios (o que realmente faz o site).

Uma separação desse tipo também permite que um site seja desenvolvido em paralelo por duas equipes distintas: uma responsável pela lógica de negócio e outra pelo design. Desde que poucos programadores capazes são igualmente capazes, quando se trata de design visual, esta é uma vantagem significativa.

Infelizmente, o PHP está longe de promover esta separação, incentivando justamente o inverso. O ponto chave do PHP é a combinação direta dos formulários HTML com a lógica do negócio - o código que produz o conteúdo do site, que por sua vez é presumivelmente derivado de um banco de dados. Mesmo programadores inexperientes têm dificuldade em compreender pouco de marcação HTML com o código que gera o conteúdo, o que por sua vez faz com que o PHP seja uma linguagem fácil de aprender e de ensinar. E em comparação com a alternativa mais comum de geração de marcação HTML com função de uma linguagem de programação de impressão, isso certamente representa uma melhora significativa na capacidade de leitura e capacidade de escrita.

No entanto, o efeito que tem é precisamente o oposto do que o desejado: a lógica de negócios e apresentação são completamente misturados. Isso faz com que as alterações de design incremental particularmente difícil. Um observador uncharitable podemos especular que é por isso que tão poucos sites PHP orientado receber melhorias em tempo útil à sua estética e interface do usuário.

Como, então, você deve lidar com esta desvantagem? A única opção é para os colaboradores, voluntariamente, impõem a si mesmos uma separação disciplinada que a linguagem não pode cumprir. A abordagem básica é a seguinte: 

Divide cada página PHP em duas partes: a primeira realiza consultas de dados e faz o que mais é necessário para calcular o conteúdo da página, antes de armazenar o teor calculado em uma série de variáveis que - e isto é crucial - conter nenhuma marcação. Então, a última parte da página pode simplesmente incorporar os valores das variáveis em marcação HTML, usando loops eventualmente atravessar as estruturas de dados potencialmente complexas contendo o conteúdo real.

Caso seja necessário o site do projeto para alterar numa data posterior, é provável que muitas alterações podem ser feitas apenas na parte final da página, a lógica do negócio (que foi provavelmente escrito com uma atenção significativa para a segurança e correção) deve permanecer como é. Em alguns casos, pode até não ser possível colocar as duas partes da página em arquivos separados.

Esta abordagem pode ser aumentada com qualquer um de uma gama de variedade de templates sistemas construídos em PHP - ou até mesmo algo como XSLT, uma vez que rolar-seu-próprio sistema de templates nunca são poderosos o suficiente.

Uma vez que você tomou a decisão de usar um sistema de templates de alguma sorte, vale a pena parar para pensar que o PHP na verdade, você ganha em comparação com um sistema de templates para algum outro idioma - já que a mistura dos códigos e de marcação é um dos traços distintivos da PHP .

3. Usando uma equipe de desenvolvedores para construir um site 

PHP parece ser predominantemente destinada a desenvolvedores solitários em vez que de equipes de desenvolvimento. O maior problema do PHP como linguagem de desenvolvimento em time reside na falta de namespaces. Todas as funções definidas residem em um único namespace, sem exceções. Isso tem as seguintes conseqüências:

Você pode redefinir uma função definida por um outro membro da equipe. Os desenvolvedores precisam ter regras de desenvolvimento e se comunicarem de uma forma excelente para evitarem isso. Ainda pior, você pode redefinir uma função built-in utilizada no código escrito por outro desenvolvedor.

A inclusão de arquivos (principal mecanismo do PHP para reutilização de código) tende a agravar este problema: tentando usar o código escrito em qualquer outro lugar pode tornar-se um pesadelo.

Os maiores problemas surgem mesmo fora do namespace. PHP não exige a declaração de variáveis e não emite avisos neste sentido, o que agrava o problema de um único namespace para desenvolvedores trabalhando em colaboração. A configuração de register_globals no arquivo php.ini pode agravar ainda mais o problema, como discutiremo em mais detalhes abaixo.

4. Quando usar PHP

Nós identificamos uma série de problemas e questões que surgem quando tenta-se usar PHP em projetos de grande porte. No entanto, nós não declaramos que o PHP nunca deve ser usado. Frisamos apenas que estas questões desaconselham o uso desta linguagem em determinadas circunstâncias. A lista a seguir sugere perguntas que devem ser considerados antes de tomar uma decisão de usar o PHP para um determinado projeto.

Quanto controle você tem sobre o ambiente de implantação? Quando você não tem acesso a alterar o arquivo php.ini no servidor, pode ter sérios problemas com diferentes configurações entre seu ambiente de desenvolvimento e o ambiente de produção.

Quantas pessoas vão trabalhar no local, agora e no futuro? PHP não tem os recursos necessários para promover o trabalho em equipe eficaz, quanto maior a sua equipe, maior os problemas que você terá.

Quão grande o site será, em termos de número de páginas diferentes? Isto está relacionado com o item anterior: quanto maior o site, maior a sua necessidade de recursos de linguagem que promovam o trabalho em equipe.

Qual a vida útil prevista para o site? Quanto mais tempo ela dura, mais provável que mudanças significativas sejam necessárias. Se você usar o PHP da forma padrão, sem nenhum framework de divisão de camadas, as manutenções tendem a custar caro.

Qual o perfil da sua equipe? Os desenvolvedores são experientes? Desenvolvedores experientes serão mais atrapalhados que ajudados pela simplicidade da linguagem. Desenvolvedores inexperientes encontrarão na simplicidade um benefício significativo.

5. Conclusões

PHP é uma linguagem conveniente para o desenvolvimento rápido de simples sites dinâmicos. Sites construídos com esta linguagem podem, em muitos casos, ser implantados por tempo indeterminado, sem gastar tempo e dinheiro com manutenções. A simplicidade do PHP faz com que seja uma boa linguagem para programadores inexperientes, como aqueles que se deslocam de um papel de puro design de página (webdesigners) para a programação.

Para os desenvolvedores mais experientes, no entanto, a simplicidade da linguagem torna-se muitas vezes complexidade, retardando o processo de desenvolvimento. Estes colaboradores são aqueles que possuem as habilidades necessárias para construir grandes e / ou complexos websites. Usar PHP para esses sites tende a levar a uma perda de produtividade. Esta tendência é reforçada pela falta no PHP de recursos linguísticos necessários para promover o trabalho em equipe. Se seu projeto for grande ou complexo, talvez seja melhor escolher uma outra linguagem de desenvolvimento.

Nos casos em que o PHP tem sido considerado inadequado, qual linguagem deve ser usada? Não há escolha a serem indicadas como balas de prata aqui já que algumas outras linguagens podem ser tão ruins quanto o PHP para fazer um trabalho sério de desenvolvimento. O autor e seus colegas têm tido bons resultados com Perl, Java, Python em grandes projetos de desenvolvimento.




LINKS RELACIONADOS

- Ranking das Linguagens de Programação
- Curso de PHP Online


Curso de PHP - Todos os Direitos Reservados - 2007-2017