Padrões de design
A intenção do repositório é inspirar os desenvolvedores a compreender e usar padrões de design por meio de vários exemplos. Considere adicionar um exemplo para qualquer padrão que possa ajudar outras pessoas a entender bem o padrão.
Instalação
Por favor, siga as diretrizes para executar este projeto.
- Clone o repositório usando
git clone https://github.com/basherr/PHP-Design-Patterns.git
- Execute o seguinte comando dentro da pasta clonada:
composer install
- Certifique-se de que todos os casos de teste sejam aprovados executando o comando
composer test
- Para atender o projeto, navegue dentro da pasta
public/
e execute o comando: php -S localhost:8000
Confira o route.php para testar qualquer exemplo de padrão específico.
Se você achar alguma implementação errada ou vaga, crie um problema e deixe-nos ajudar uns aos outros no caminho para aprender Design Patterns .
Exemplo de padrões de design criacional
- Padrão abstrato
- Exemplo de fabricante de TV - Contribuição do proprietário
- Padrão de Construtor
- Banco de dados - Contribuição do proprietário
- Restaurante - Contribuição do proprietário
- Padrão do Método Fatroy
- Fabricante de automóveis - Contribuição do proprietário
- Logger - Contribuição do proprietário
- Padrão de piscina
- StringReverse Worker - Contribuição do proprietário
- Padrão de protótipo
- AcmePrototype - Contribuição do proprietário
- Padrão de fábrica estático
- Fornecedores - Contribuição do proprietário
Exemplo de padrões de projeto estrutural
- Padrão de adaptador
- Adaptador Humano - Contribuição do proprietário
- Adaptador de sistemas operacionais - Contribuição do proprietário
- Padrão de ponte
- Ponte do fornecedor de voo - Contribuição do proprietário
- Padrão Composto
- Formulário Composto - Contribuição do proprietário
- Padrão Decorador
- Registro ativo - Contribuição do proprietário
- Fachada
- Quickbooks - Contribuição do proprietário
- Padrão de proxy
- Proxy do leitor de arquivos – Contribuição do proprietário
- Padrão de registro
- Registro do exame - Contribuição do proprietário
- Padrão de injeção de dependência
- Mailer - Contribuição do proprietário
Exemplo de padrões de design de comportamento
- Padrão de cadeia de responsabilidade
- Lidar com solicitação HTTP - Contribuição do proprietário
- Padrão de comando
- API Scrapper - Contribuição do proprietário
- Padrão Iterador
- Fornecedores de hotéis - Contribuição do proprietário
- Padrão Observador
- Observador de inscrição de usuário - Contribuição do proprietário
Guias de contribuição
Sua contribuição pode ter um impacto muito bom na comunidade, portanto, tente compartilhar todos os exemplos possíveis que você possa imaginar ou que tenha experimentado no passado.
O repositório não é baseado em nenhum framework, mas sim inspirado em No Framework
A estrutura do código do repositório é a seguinte:
-
app
-
bootstraps
-
public
-
stubs
-
tests
O ciclo de vida do aplicativo é o seguinte:
-
public/index.php
serve como ponto de entrada para todo o aplicativo que carrega boostrap/autoload.php
-
bootstrap/autoload.php
processa a solicitação HTTP
e encaminha a rota para o Controller method
relevante definido em bootstrap/routes.php
.
Para contribuir e adicionar exemplos do mundo real para o padrão relacionado, siga as orientações:
- Bifurque o repositório
- Crie uma pasta dentro de
app/Patterns/{Type eg Creational, Behavioral or Structural}/{Pattern Name}/{Example Name}/your code
- Crie um READMe.md e inclua um diagrama UML. Exemplo README.md
- Adicionar
unit tests
- Crie
Application.php
com um método chamado render
para descrever o uso. Exemplo de aplicativo.php - Adicione um método no controlador relevante (por exemplo, criacional) e adicione uma rota em
bootstraps/routes.php
- Execute
composer test
e certifique-se de que todos os testes foram aprovados - Crie um PR contra o branch master
Fique à vontade para contribuir e criar solicitações pull.
Comandos do console
O único comando do console disponível para criação de testes é:
php .bootstrapsconsole_autoload.php MyAwesomeTestName
Discussões
Crie um problema ou junte-se ao Discord para qualquer discussão.
Licenciado
Todas as bases de código são licenciadas pelo MIT, salvo especificação em contrário.