Un socio de programación de pares para escribir mejor PHP. Pahout significa Php Mahout?
PHP ha sido agregado varias características en la larga historia. Sin embargo, debido a la duración de su historia, muchas sintaxis antigua se dispersan por Internet. Si un Phper aprendió de ellos, el PHPER no puede conocer la excelente sintaxis y las funciones existentes en la última versión de PHP. Esto es algo muy triste.
Entonces, pensé en hacer un enlace como un compañero de programación de pares que te dice una buena manera. Te ayudará a escribir mejor PHP contigo.
Sin embargo, no intente solucionar todos los códigos existentes en función de los indicios de Pahout primero. Pahout es un socio de programación de parejas. Al emparejar la programación, no verifica todos los códigos existentes, ¿verdad? Mi recomendación es verificar solo archivos recién creados o modificados. Por ejemplo, es una buena idea establecer el gancho previamente al Commit de la siguiente manera:
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahout requiere el siguiente entorno:
Puede instalar con el compositor.
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
Al usar la imagen Docker, puede probar fácilmente Pahout sin afectar el entorno local.
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
Está utilizando PHP 7.1.8 en su proyecto. ¿Qué opinas del siguiente código?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...Quizás sea un código familiar. Sin embargo, si conoce el operador nulo de Coalescing, escribirá algo como esto:
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahout apoyará tal reescritura. Intenta ejecutar en el ejemplo anterior.
$ pahout --php-version 7.1.8 test.php
test.php:8
NullCoalescingOperator: Use the null coalecing operator instead of the ternary operator. [https://github.com/wata727/pahout/blob/master/docs/NullCoalescingOperator.md]
1 files checked, 1 hints detected.
¡Pahout le dice dónde se puede usar el operador nulo de Coalescing! Para la lista de sugerencias proporcionadas por Pahout, consulte esta documentación.
Si desea analizar varios archivos, puede especificar más de uno.
$ pahout --php-version 7.1.8 test.php test2.php ...
Si especifica un nombre de directorio, se cubrirán todos los archivos .php en ese directorio.
$ pahout --php-version 7.1.8 src
Puede cambiar la configuración desde la línea de comando.
$ pahout --help
Description:
A pair programming partner for writing better PHP
Usage:
check [options] [--] [<files>...]
Arguments:
files List of file names or directory names to be analyzed
Options:
--php-version[=PHP-VERSION] Target PHP version [default: runtime version]
--ignore-tools[=IGNORE-TOOLS] Ignore tool types [default: Nothing to ignore] (multiple values allowed)
--ignore-paths[=IGNORE-PATHS] Ignore files and directories [default: Nothing to ignore] (multiple values allowed)
--extensions[=EXTENSIONS] File extensions to be analyzed [default: php] (multiple values allowed)
--vendor[=VENDOR] Check vendor directory [default: false]
-f, --format[=FORMAT] Output format [default: "pretty", possibles: "pretty", "json"]
-c, --config[=CONFIG] Config file path [default: ".pahout.yaml"]
--only-tools[=ONLY-TOOLS] Check only the given tool types (multiple values allowed)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
También puede cambiar la configuración preparando un archivo de configuración llamado .pahout.yaml .
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : trueEspecifique la versión PHP de su proyecto. El valor predeterminado es la versión de tiempo de ejecución. Pahout usa esta versión para seleccionar herramientas.
En Pahout, lo que genera sugerencias se llama "herramienta". Puede especificar el nombre de la herramienta que desea ignorar. Mire la documentación de la lista de nombres de herramientas.
Contrariamente a ignore_tools , especifique herramientas para verificar.
Puede especificar el archivo o directorio que desea ignorar. Si se especifica un nombre de directorio, se ignoran todos los archivos en ese directorio.
Archivo extensiones a analizar. El valor predeterminado es solo php .
Puede establecer si ignorar el directorio de proveedores.
Nota: El directorio de proveedores se ignora de forma predeterminada. En general, no necesita verificar el directorio de proveedores.
Especifique el formato de salida. Actualmente solo pretty y json son compatibles.
Especifique un nombre de archivo de configuración. Esto es útil cuando desea usar el nombre del archivo que no sea .pahout.yaml en el archivo de configuración.
Usando anotaciones, puede ignorar sugerencias para líneas específicas. Especifique el nombre de la herramienta que desea ignorar con @rebel .
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;Los siguientes comentarios funcionarán de la misma manera.
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator Kazuma Watanabe