Modernização de Aplicações Legadas em PHP
Modernização de Aplicações Legadas em PHP
Mantenha seu código sob controle seguindo uma série de passos pequenos e concretos.
Sobre o Livro
"Você vai fazer seu código voar como o vento. Ele terá autoload, injeção de dependências, testes unitários, separação de camadas e usará front-controller."
Será que sua aplicação PHP legada é composta de scripts feitos página a página colocados diretamente no diretório raiz (Document Root) do seu servidor web? Esses scripts, juntamente com todas as outras classes e funções, estão misturando as responsabilidades do modelo, visão e controlador (model, view e do controller) dentro do mesmo escopo? A maioria do fluxo lógico está dentro de arquivos include e de funções globais, em vez de pertencerem à métodos de classes? Você já deve saber que o uso intenso de variáveis globais faz com que mudanças sobre um ponto gera consequências inesperadas em algum outro ponto. Estes e outros fatores tornam extremamente difíceis e custosas as implementações de novas funcionalidades e correções de bugs. Trabalhar com essa aplicação legada é semelhante a arrastar os pés na lama.
Mas isso não precisa ser assim. Este livro te mostrará como modernizar sua aplicação por meio da extração e substituição de seus artefatos legados. Vamos usar uma abordagem passo-a-passo, indo devagar e metodicamente, de forma a melhorar sua aplicação desde o início. Além do mais, você vai manter a sua aplicação rodando o tempo todo. Cada um dos passos completado no processo manterá sua base de código totalmente operacional e com um maior qualidade. Quando estiver pronto, você conseguirá entender rapidamente seu código. Ele será carregado via autoload, terá injeção de dependência, testado unitariamente, separado em camadas e terá um front-controller.
Observe que esse livro fala sobre modernização em termos de práticas e técnicas, e não em termos de ferramentas. Nós não vamos discutir sobre os últimos frameworks ou bibliotecas, nem quem é o o mais famoso. Com exceção da apresentação dos sistemas de teste como o PHPUNIT, e uma ou duas bibliotecas de terceiros, o livro não diz para você incluir nenhum código de terceiro em sua aplicação legada. A maior parte do código bem limitado que adicionamos na sua aplicação é específico do livro. Nós iremos nos aperfeiçoar como programadores ao mesmo tempo que melhoramos a qualidade da nossa aplicação legada.
Se você se sentir sobrecarregado por uma aplicação legada, "Modernizando Aplicações Legadas em PHP" é o livro para você. Se preferir uma cópia em papel, a versão em inglês está disponível em Lulu.com.
Se você ainda estiver indeciso, o vídeo "It Was Like That When I Got Here" (embutido na página mais acima) passa rapidamente pelos primeiros cápitulos, de graça, e você pode ler as avaliações do livro na página de feedback. Você também ler a avaliação de 4,5 estrelas do SitePoint.
Lembre de seguir o Twitter do livro (@mlaphp versão em inglês, para versão em português, #mlaphp_pt_br) e conte para seus amigos!
Sumário
- Prefácio
- Introdução e Agradecimentos
-
Sobre a tradução
- Agradecimentos da tradução
- Dedicatória da tradução
-
Aplicações legadas
- A típica aplicação PHP
- Reescrita ou refatoração?
- Frameworks legados
- Revisão e próximos passos
-
Pré-requisitos
- Controle de versões
- A versão do PHP
- Editor/IDE
- Guia de estilo
- Suíte de testes
- Revisão e próximos passos
-
Implemente um autoloader
- PSR-0
- Um único lugar para as classes
- Adicionando o código do autoloader
- Dúvidas comuns
- Revisão e próximos passos
-
Consolide as classes e as funções
- Consolide os arquivos de classes
- Consolide funções dentro de arquivos de classe
- Dúvidas comuns
- Revisão e próximos passos
-
Substitua variáveis
global
por injeção de dependências- Dependências globais
- O processo de substituição
- Dúvidas comuns
- Revisão e próximos passos
-
Substitua
new
por injeção de dependências- Instanciação embutida
- O processo de substituição
- Dúvidas comuns
- Revisão e próximos passos
-
Escreva testes
- Lutando contra a resistência aos testes
- Configuração de uma suíte de testes
- Dúvidas comuns
- Revisão e próximos passos
-
Extraia as declarações SQL para Gateways
- Declarações SQL embutidas
- O processo de extração
- Dúvidas comuns
- Revisão e próximos passos
-
Extraia a lógica de domínio para Transactions
- Lógica de domínio embutida
- Padrões de lógica de domínio
- O processo de extração
- Dúvidas comuns
- Revisão e próximos passos
-
Extraia a lógica de apresentação para arquivos de view (visão)
- Lógica de apresentação embutida
- O processo de extração
- Dúvidas comuns
- Revisão e próximos passos
-
Extraia a lógica de ação para Controllers
- Lógica de ação embutida
- O processo de extração
- Dúvidas comuns
- Revisão e próximos passos
-
Substitua os includes nas classes
-
Chamadas
include
embutidas - O processo de substituição
- Dúvidas comuns
- Revisão e próximos passos
-
Chamadas
-
Separe os recursos públicos dos não-públicos
- Recursos misturados
- O processo de separação
- Dúvidas comuns
- Revisão e próximos passos
-
Desacople os caminhos das URLs dos caminhos dos arquivos
- Caminhos acoplados
- O processo de desacoplamento
- Dúvidas comuns
- Revisão e próximos passos
-
Remova a lógica repetida nos scripts de página
- Lógica repetida
- O processo de remoção
- Dúvidas comuns
- Revisão e próximos passos
- Apêndice A: Script de Página Legado Típico
- Apêndice B: Código antes dos Gateways
- Apêndice C: Código depois dos Gateways
- Apêndice D: Código depois dos Transaction Scripts
- Apêndice E: Código antes de agrupar a lógica de apresentação
- Apêndice F: Código depois de agrupar a lógica de apresentação
- Apêndice G: Código depois do objeto Response e do arquivo de view
- Apêndice I: Código depois da extração do Controller
- Apêndice J: Código depois da injeção de dependências no Controller
A garantia Leanpub incondicional, sem riscos, de 100% de satisfação
Durante 60 dias da data de compra você pode solicitar o reembolso total de qualquer compra Leanpub, em dois cliques. Nós processamos os reembolsos manualmente, então eles podem demorar alguns dias para aparecer. Veja os termos completos.
Ganhe $8 em uma compra de $10 e $16 em uma compra de $20
Pagamos 80% de royalties em compras de $7,99 ou mais e 80% de royalties menos uma taxa fixa de 50 centavos em compras entre $0,99 e $7,98. Você ganha $8 em uma venda de $10 e $16 em uma venda de $20. Portanto, se vendermos 5000 cópias não reembolsadas do seu livro por $20, você ganhará $80,000.
(Sim, alguns autores já ganharam muito mais do que isso no Leanpub.)
Na verdade, os autores ganharammais de 13 milhões de dólares escrevendo, publicando e vendendo no Leanpub.
Saiba mais sobre escrever no Leanpub
Atualizações grauitas. Sem DRM.
Se você compra um livro da Leanpub, você recebe atualizações gratuitas enquanto o autor atualizar o livro! Muitos autores utilizam a Leanpub para publicar os seus livros em andamento, enquanto eles estão os escrevendo. Todos os leitores recebem atualizações gratuitas, não importa quando ou por quanto eles compraram o livro (até mesmo de graça).
A maioria dos livros Leanpub estão disponíveis em PDF (para computadores) e EPUB (para telefones, tablets, e Kindle). Os formatos que um livro inclui são exibidos no top direito dessa página.
Por último, livros Leapub não têm nenhuma proteção anti-cópias DRM sem sentido, então você pode facilmente lê-los em qualquer dispositivo suportado.
Aprenda mais sobre os formatos de ebook da Leanpub e aonde lê-los