Patrones de diseño
La intención del repositorio es inspirar a los desarrolladores a comprender y utilizar patrones de diseño a través de varios ejemplos. Considere agregar un ejemplo de cualquier patrón que pueda ayudar a otros a comprenderlo bien.
Instalación
Siga las pautas para ejecutar este proyecto.
- Clona el repositorio usando
git clone https://github.com/basherr/PHP-Design-Patterns.git
- Ejecute el siguiente comando dentro de la carpeta clonada:
composer install
- Asegúrese de que todos los casos de prueba pasen ejecutando el comando
composer test
- Para servir el proyecto, navegue dentro de la carpeta
public/
y ejecute el comando: php -S localhost:8000
Consulte route.php para probar cualquier ejemplo de patrón específico.
Si encuentra alguna implementación incorrecta o vaga, cree un problema y permítanos ayudarnos mutuamente en el camino para aprender patrones de diseño .
Ejemplos de patrones de diseño creacional
- Patrón abstracto
- Ejemplo de fabricante de televisor: aportado por el propietario
- Patrón de constructor
- Base de datos: aportada por el propietario
- Restaurante - Aportado por el propietario
- Patrón del método Factoryroy
- Fabricante de automóviles: aportado por el propietario
- Registrador - Contribuido por el propietario
- Patrón de piscina
- Trabajador StringReverse - Contribuido por el propietario
- Patrón de prototipo
- AcmePrototype - Contribuido por el propietario
- Patrón de fábrica estática
- Proveedores - Aportado por el propietario
Ejemplos de patrones de diseño estructural
- Patrón de adaptador
- Adaptador humano - Contribuido por el propietario
- Adaptador de sistemas operativos: aportado por el propietario
- Patrón de puente
- Puente del proveedor de vuelos: aportado por el propietario
- Patrón compuesto
- Formulario compuesto: aportado por el propietario
- Patrón decorador
- Registro activo: aportado por el propietario
- Fachada
- Quickbooks - Contribuido por el propietario
- Patrón de proxy
- Proxy de lector de archivos: aportado por el propietario
- Patrón de registro
- Registro de exámenes: aportado por el propietario
- Patrón de inyección de dependencia
- Anuncio publicitario: aportado por el propietario.
Ejemplos de patrones de diseño de comportamiento
- Patrón de cadena de responsabilidad
- Manejar solicitud Http - Contribuido por el propietario
- Patrón de comando
- API Scrapper: aportado por el propietario
- Patrón iterador
- Proveedores de hoteles - Contribuido por el propietario
- Patrón de observador
- Observador de registro de usuario: aportado por el propietario
Guías de contribución
Su contribución puede tener un muy buen impacto en la comunidad, por lo tanto, intente compartir todos los ejemplos posibles que se le ocurran o que haya experimentado en el pasado.
El repositorio no se basa en ningún marco, sino que está inspirado en No Framework.
La estructura del código del repositorio es la siguiente:
-
app
-
bootstraps
-
public
-
stubs
-
tests
El ciclo de vida de la aplicación es el siguiente:
-
public/index.php
sirve como punto de entrada para toda la aplicación que carga boostrap/autoload.php
-
bootstrap/autoload.php
procesa la solicitud HTTP
y reenvía la ruta al Controller method
relevante definido en bootstrap/routes.php
.
Para contribuir y agregar ejemplos del mundo real para el patrón relacionado, siga las pautas:
- Bifurcar el repositorio
- Cree una carpeta dentro de
app/Patterns/{Type eg Creational, Behavioral or Structural}/{Pattern Name}/{Example Name}/your code
- Cree un archivo READMe.md e incluya un diagrama UML. Ejemplo README.md
- Agregar
unit tests
- Cree
Application.php
con un método llamado render
para describir el uso. Ejemplo de aplicación.php - Agregue un método en el controlador relevante (por ejemplo, creacional) y agregue una ruta en
bootstraps/routes.php
- Ejecute
composer test
y asegúrese de que todas las pruebas sean satisfactorias. - Crear un PR contra la rama maestra
No dude en contribuir y crear solicitudes de extracción.
Comandos de consola
El único comando de consola disponible para crear pruebas es:
php .bootstrapsconsole_autoload.php MyAwesomeTestName
Discusiones
Cree un problema o únase a Discord para cualquier discusión.
Licenciado
Todas las bases de código tienen licencia MIT a menos que se especifique lo contrario.