Um parceiro de programação de par para escrever melhor PHP. Pahout significa php mahout?
O PHP foi adicionado vários recursos na longa história. No entanto, devido à duração de sua história, muitas sintaxes antigas estão espalhadas pela Internet. Se um expper aprendido com eles, o PHPER não poderá conhecer a excelente sintaxe e funções existentes na versão mais recente do PHP. Isso é uma coisa muito triste.
Então, pensei em fazer um linhador como um parceiro de programação de par que lhe diz uma boa maneira. Isso ajudará você a escrever um PHP melhor com você.
No entanto, não tente corrigir todos os códigos existentes com base nas dicas de Pahout primeiro. Pahout é um parceiro de programação de pares. Ao combinar a programação, você não verifica todos os códigos existentes, não é? Minha recomendação é verificar apenas arquivos recém -criados ou modificados. Por exemplo, é uma boa ideia definir o gancho pré-comprometido da seguinte forma:
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahout requer o seguinte ambiente:
Você pode instalar com o compositor.
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
Usando a imagem do Docker, você pode tentar facilmente Pahout sem afetar o ambiente local.
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
Você está usando o PHP 7.1.8 em seu projeto. O que você acha do código a seguir?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...Talvez seja um código familiar. No entanto, se você conhece o operador nulo de coalescentes, escreverá algo assim:
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahout apoiará essa reescrita. Tente executar no exemplo acima.
$ 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 diz a você onde o operador de coalescência nulo pode ser usado! Para a lista de dicas fornecidas por Pahout, consulte esta documentação.
Se você deseja analisar vários arquivos, poderá especificar mais de um.
$ pahout --php-version 7.1.8 test.php test2.php ...
Se você especificar um nome de diretório, todos os arquivos .php sob esse diretório serão abordados.
$ pahout --php-version 7.1.8 src
Você pode alterar a configuração da linha 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
Você também pode alterar a configuração preparando um arquivo de configuração chamado .pahout.yaml .
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : trueEspecifique a versão PHP do seu projeto. O padrão é a versão de tempo de execução. Pahout usa esta versão para selecionar ferramentas.
Em Pahout, o que gera dicas é chamado de "ferramenta". Você pode especificar o nome da ferramenta que deseja ignorar. Veja a documentação da lista de nomes de ferramentas.
Ao contrário de ignore_tools , especifique as ferramentas para verificar.
Você pode especificar o arquivo ou diretório que deseja ignorar. Se um nome de diretório for especificado, todos os arquivos neste diretório serão ignorados.
Extensões de arquivo a serem analisadas. O padrão é apenas php .
Você pode definir se deve ignorar o diretório do fornecedor.
Nota: O diretório do fornecedor é ignorado por padrão. Geralmente, você não precisa verificar o diretório do fornecedor.
Especifique o formato de saída. Atualmente, apenas pretty e json são suportados.
Especifique um nome de arquivo de configuração. Isso é útil quando você deseja usar o nome do arquivo que não seja .pahout.yaml no arquivo de configuração.
Usando anotações, você pode ignorar dicas para linhas específicas. Especifique o nome da ferramenta que você deseja ignorar com @rebel .
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;Os seguintes comentários funcionarão da mesma maneira.
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator Kazuma Watanabe