Implementar PSR en proyectos o librerías PHP
En un post anterior vimos Cómo crear una librería en PHP instalable con Composer. En este post vimos lo suficiente para reutilizar tú código PHP a través de todos tus proyectos de una manera centralizada y eficiente. Sin embargo, si deseas que tu librería o proyecto cumpla los estándares de la comunidad en cuanto estilo de código deberás conocer e implementar PSR (PHP Standard Recomendations).
Instalación
Lo primero que debes hacer es instalar una librería que te ayude a preservar los estilos y recomendaciones de manera automatizada. Para esto puedes instalar la siguiente librería.
composer require --dev squizlabs/php_codesniffer
Configuración
También necesitarás agregar la configuración para el codesniffer en donde se definirán las reglas que aplicará, y los directorios sobre los cuales aplicará estas reglas. Debes crear un archivo en la raíz del proyecto llamado .phpcs.xml
. A modo de ejemplo, te presento la siguiente configuración que utilizo en la mayoría de mis proyectos.
<?xml version="1.0"?>
<ruleset name="PHP Coding Standards" namespace="Pleets\CS\Standard">
<file>./src</file>
<file>./tests</file>
<exclude-pattern>./tests/coverage/*</exclude-pattern>
<rule ref="PSR1"/>
<rule ref="PSR2"/>
<rule ref="PSR12"/>
<rule ref="Squiz.Strings.DoubleQuoteUsage.NotRequired" />
<rule ref="Zend">
<exclude name="Zend.NamingConventions.ValidVariableName.PrivateNoUnderscore" />
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="120"/>
</properties>
</rule>
</ruleset>
Puedes profundizar un poco en cada una de las configuraciones posible en la wiki oficial. Lo más importante en la configuración anterior es la definición de los directorios a chequear (./src
y ./tests
) y la definición de las reglas PSR1, PSR2 y PSR12.
Seguido a esto, puedes agregar un par scripts para facilitar el uso de la librería. Yo en lo personal utilizo los siguientes:
"scripts": {
"phpcs-check": "phpcs --colors -s",
"phpcs-fix": "phpcbf --colors -s",
"phpcs-auto-check": "@phpcs-check --standard=.phpcs.xml",
"phpcs-auto-fix": "@phpcs-fix --standard=.phpcs.xml",
"phpcs-auto-check-summary": "phpcs --report=summary -p",
"phpcs-auto-fix-summary": "phpcbf --report=summary -p"
}
A continuación te explico que hace cada uno de estos scripts:
- phpcs-auto-check: Verifica los errores de PSR que tiene el proyecto a manera detallada.
- phpcs-auto-check-summary: Verifica los errores e PSR que tiene el proyecto a manera de resumen (ideal para ejecutarse en pipelines)
- phpcs-auto-fix: Corrije los errores de PSR y muestra el detalle de los cambios.
- phpcs-auto-fix-summary: Corrije los errores de PSR y muestra un resumen.
Uso
Si has realizado la configuración de script mostrada anteriormente podrías ejecutar el siguiente comando para correr el fixer a modo de chequeo sin modificar nada.
composer phpcs-auto-check
Obtendrás una salida como la siguiente que te muestra los errores por cada archivo.
Este comando lo puedes integrar a tu pipeline para asegurar la homogeneidad del código en la integración continua. Hasta la próxima.