Este repositorio es parte del proyecto Refactoring.Guru.
Contiene ejemplos de PHP para todos los patrones de diseño clásicos de GoF.
Cada patrón incluye dos ejemplos:
Los ejemplos conceptuales muestran la estructura interna de los patrones, incluidos comentarios detallados.
Los ejemplos del mundo real muestran cómo se pueden utilizar patrones en aplicaciones PHP del mundo real.
Estos ejemplos requieren PHP 7.3 y versiones posteriores, aunque se pueden replicar fácilmente en versiones anteriores de PHP.
Esta versión proporciona argumentos explícitos y declaraciones de tipo de retorno, que ayudan a comprender mejor las características de algunos patrones que no son muy obvias en el lenguaje escrito dinámicamente.
Todos los ejemplos se pueden ejecutar a través de la línea de comando, utilizando el ejecutable PHP de la siguiente manera:
php src/Path-to-example/index.php
Para obtener la mejor experiencia, recomiendo trabajar con ejemplos con estos IDE:
No tengo ideas decentes para usos en el mundo real de estos dos en aplicaciones PHP. Si los usó en su proyecto, no dude en sugerirme una idea publicando un problema.
Cliente significa cliente de clases, definido como parte de un patrón , que es simplemente un llamador de los métodos dados o un usuario de las clases dadas. En otras palabras, es la parte del código de tu aplicación que utiliza las clases del patrón.
Primero eche un vistazo al ejemplo conceptual. Allí encontrará descripciones detalladas de cada clase en un patrón, su función y su conexión con otras clases.
Agradezco cualquier ayuda, ya sea una simple corrección de un error tipográfico o un ejemplo completamente nuevo. Simplemente haga una bifurcación, haga su cambio y envíe una solicitud de extracción.
Aquí hay una guía de estilo que puede ayudarlo a mantener sus cambios consistentes con el resto del código del proyecto:
Todo el código debe coincidir con la guía de estilo de codificación PSR2.
Intente ajustar el código al carácter 80. Es útil enumerar el código en el sitio web sin barras de desplazamiento.
Los ejemplos deben coincidir con la siguiente convención de espacio de nombres: RefactoringGuru{pattern-name}{example-name}. Por ejemplo:
<?php
namespace RefactoringGuru FactoryMethod Example Buttons ;
class Button {
...
Trate de poner todo el código dentro de un archivo. Sí, me doy cuenta de que no es así como se supone que debe hacerse en producción. Sin embargo, ayuda a las personas a comprender mejor los ejemplos, ya que todo el código cabe en una sola pantalla.
Los comentarios pueden tener o no etiquetas de idioma, como esta:
/**
* EN : All products families have the same varieties ( MacOS / Windows ) .
*
* This is a MacOS variant of a button .
*
* RU : Все семейства продуктов имеют одни и те же вариации ( MacOS / Windows ) .
*
* Это вариант кнопки под MacOS .
* /
Esta notación ayuda a mantener el código en un solo lugar y al mismo tiempo permite que el sitio web genere versiones separadas de ejemplos para todos los idiomas enumerados. No se asuste e ignore la parte que no esté en inglés de dichos comentarios. Si quieres cambiar algo en un comentario como este, simplemente hazlo. Incluso si lo hace mal, le diremos cómo solucionarlo durante la solicitud de extracción.
Esta obra está bajo una licencia Creative Commons Atribución-No Comercial-SinDerivadas 4.0 Internacional.
Autores: Alexander Shvets (@neochief) y Alexey Pyltsyn (@lex111)