Mejore sus estándares de codificación de Laravel usando GrumPHP
No importa si eres un desarrollador experimentado o un novato, debes mejorar tus estándares de codificación para convertirte en un mejor desarrollador. Ya sea que esté trabajando solo o con un equipo, siempre es una buena práctica tener las mismas convenciones de codificación durante todo el proyecto. Pero mantener los mismos estándares en todos los lugares no es fácil si lo estamos verificando manualmente. Puede suceder que no cumplió con el estándar incluso si decidió seguirlo. Es un error humano, a veces pasamos por alto cosas que no deberíamos. Para evitar estos problemas, debemos automatizar nuestro flujo de trabajo. Al hacerlo, nuestro sistema automatizado se encargará de la tarea que le hemos asignado y el 99,99% de las veces nunca falla.
GrumPHP es una biblioteca que vigila cada confirmación de git. Si su código no sigue los estándares dados, la biblioteca no le permite confirmar el código. Primero debe corregir su código y luego solo usted podrá comprometerse con Git.
¿Suena bien? Veámoslo en acción.
Empezando
Como estamos hablando de los estándares de codificación de Laravel, debe tener una configuración de proyecto de Laravel. Si no lo tiene, instálelo con el comando:
composer create-project --prefer-dist laravel/laravel laravel-dev
Aquí ‘laravel-dev’ es el nombre de su proyecto. Abra la terminal en el directorio raíz de su proyecto e inicialice el git.
git init
Es obligatorio tener Git en tu proyecto para poder aprovechar GrumPHP. Aquí es donde funciona. Cuando instalamos GrumPHP, crea un gancho dentro de la .git
carpeta y luego vigila cada confirmación.
Ahora, agregue y confirme sus archivos actuales en el git usando los comandos a continuación uno por uno.
git add -A
git commit -m 'initial commit'
Mejorar el estándar de codificación Laravel usando GrumPHP
Una vez que tengamos la configuración de git en nuestro proyecto Laravel, estamos listos para instalar la biblioteca GrumPHP. Para instalarlo, ejecute el siguiente comando:
composer require --dev phpro/grumphp
Una vez que el paquete esté instalado, debería ver el siguiente mensaje en la terminal:
¡Cuidado! ¡GrumPHP está olfateando tus confirmaciones!
Significa que el paquete se instaló correctamente. A continuación, abra el grumphp.yml
archivo y agregue el siguiente código en él.
parameters:
git_dir:. bin_dir: vendor/bin
tasks: {
phpcs: {
standard: PSR2
}
}
En el código anterior, la parte importante es la línea standard: PSR2
. Aquí, le estamos diciendo a GrumPHP que verifique las convenciones de codificación de PSR2 con los archivos que se van a confirmar. Usamos PSR2 aquí porque Laravel sigue los estándares de codificación de PSR2. Después de esto, GrumPHP realizaría su tarea y nos informaría sobre el error en una consola si lo encontrara.
Si no ha instalado la biblioteca estándar de codificación, ejecute el siguiente comando para instalarla:
composer require "squizlabs/php_codesniffer=*"
Esta biblioteca tiene estándares de codificación PSR2 incluidos en su núcleo. Por lo tanto, GrumPHP verificará su código de Laravel con el PSR2 y le sugerirá cambios si no está siguiendo los estándares de PSR2.
Digamos que tenemos un ImageController.php
archivo en nuestro proyecto y tenemos el siguiente código en él.
public function store(Request $request)
{
if($request->hasFile('profile_image')) {
//get filename with extension
$filenamewithextension = $request->file('profile_image')->getClientOriginalName();
//get filename without extension
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $request->file('profile_image')->getClientOriginalExtension();
//filename to store
$filenametostore = $filename.'_'.time().'.'.$extension;
//Upload File
$request->file('profile_image')->storeAs('public/profile_images', $filenametostore);
if(!file_exists(public_path('storage/profile_images/crop'))) {
mkdir(public_path('storage/profile_images/crop'), 0755);
}
// crop image
$img = Image::make(public_path('storage/profile_images/'.$filenametostore));
$croppath = public_path('storage/profile_images/crop/'.$filenametostore);
$img->crop($request->input('w'), $request->input('h'), $request->input('x1'), $request->input('y1'));
$img->save($croppath);
// you can save crop image path below in database
$path = asset('storage/profile_images/crop/'.$filenametostore);
return redirect('image')->with(['success' => "Image cropped successfully.", 'path' => $path]);
}
}
A continuación, intente confirmar el código anterior y debería ver un resultado como el siguiente:
Proporciona el error de codificación en detalles junto con el número de línea y la descripción. También puede notar la línea:
PHPCBF PUEDE ARREGLAR LAS 2 VIOLACIONES MARCADAS DEL SNIFF AUTOMÁTICAMENTE
Cómo utilizar el comando PHPCBF
Al ejecutar un comando PHPCBF, podemos corregir algunos errores automáticamente. Dirígete al directorio ‘vendor / bin’ desde la terminal y ejecuta el siguiente comando para corregir los errores usando PHPCBF.
PHPCBF --standard=PSR2 PATH_TO_YOUR_CONTROLLER
Reemplace el marcador de posición con los valores reales. Probablemente, si está ejecutando este comando en Git bash, obtendrá el error ‘bash: phpcbf: command not found’. En ese caso, ejecute este comando en el símbolo del sistema de Windows. En nuestro caso, vemos la siguiente salida en el terminal.
Tenga en cuenta que PHPCBH no resuelve todos los errores. A veces también es necesario resolver el error manualmente. Ahora, cuando intente confirmar el código, debería obtener el mensaje de éxito y el código también se comprometió.
Pensamientos finales
En este tutorial, hemos discutido cómo mejorar los estándares de codificación de Laravel usando GrumPHP. Pero no se limita solo a Laravel. También puede utilizar esta biblioteca en sus otros CMS, Frameworks. Estamos usando la biblioteca GrumPHP para nuestros proyectos principales de Laravel, WordPress y PHP. Realmente nos ayuda a mantener nuestro estilo de codificación de manera consistente.
Artículos relacionados
- PHP_CodeSniffer: una biblioteca para mejorar sus estándares de codificación PHP
- Una guía sobre cómo mejorar los estándares de codificación de WordPress