Ein Paarprogrammierungspartner zum Schreiben eines besseren PHP. Pahout bedeutet Php Mahout?
PHP wurde in der langen Geschichte verschiedene Funktionen hinzugefügt. Aufgrund der Länge seiner Geschichte ist jedoch viele alte Syntax über das Internet verstreut. Wenn ein Phper von ihnen lernte, kann der Phper die hervorragende Syntax und Funktionen, die in der neuesten PHP -Version vorhanden sind, nicht kennen. Das ist eine sehr traurige Sache.
Also habe ich darüber nachgedacht, wie ein Paarprogrammierungspartner einen Linter zu machen, der Ihnen einen guten Weg erzählt. Es wird Ihnen helfen, mit Ihnen bessere Php zu schreiben.
Bitte versuchen Sie jedoch nicht, zuerst alle vorhandenen Codes basierend auf den Hinweisen von Pahout zu beheben. Pahout ist ein Paarprogrammierungspartner. Wenn Sie die Programmierung kombinieren, überprüfen Sie nicht alle vorhandenen Codes, oder? Meine Empfehlung ist, nur neu erstellte oder geänderte Dateien zu überprüfen. Zum Beispiel ist es eine gute Idee, Pre-Commit-Haken wie folgt festzulegen:
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahout erfordert die folgende Umgebung:
Sie können mit Composer installieren.
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
Durch die Verwendung des Docker -Bildes können Sie Pahout problemlos ausprobieren, ohne die lokale Umgebung zu beeinflussen.
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
Sie verwenden PHP 7.1.8 in Ihrem Projekt. Was halten Sie von dem folgenden Code?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...Vielleicht ist es ein vertrauter Code. Wenn Sie jedoch den Null -Koalescing -Operator kennen, werden Sie so etwas schreiben:
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahout wird ein solches Umschreiben unterstützen. Versuchen Sie, auf dem obigen Beispiel zu laufen.
$ 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 sagt Ihnen, wo der Null -Koalescing -Operator verwendet werden kann! Die Liste der von Pahout bereitgestellten Hinweise finden Sie in dieser Dokumentation.
Wenn Sie mehrere Dateien analysieren möchten, können Sie mehr als eine angeben.
$ pahout --php-version 7.1.8 test.php test2.php ...
Wenn Sie einen Verzeichnisnamen angeben, werden alle .php -Dateien unter diesem Verzeichnis behandelt.
$ pahout --php-version 7.1.8 src
Sie können die Konfiguration aus der Befehlszeile ändern.
$ 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
Sie können die Konfiguration auch ändern, indem Sie eine Konfigurationsdatei namens .pahout.yaml vorbereiten.
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : trueGeben Sie die PHP -Version Ihres Projekts an. Die Standardeinstellung ist die Laufzeitversion. Pahout verwendet diese Version, um Tools auszuwählen.
In Pahout heißt es "Tool". Sie können den Toolnamen angeben, den Sie ignorieren möchten. Bitte sehen Sie sich die Dokumentation für die Liste der Toolnamen an.
Geben Sie im Gegensatz zu ignore_tools Tools zum Überprüfen an.
Sie können die Datei oder das Verzeichnis angeben, die Sie ignorieren möchten. Wenn ein Verzeichnisname angegeben ist, werden alle Dateien unter diesem Verzeichnis ignoriert.
Zu analysierende Dateierweiterungen. Standard ist nur php .
Sie können festlegen, ob das Verkäuferverzeichnis ignoriert werden soll.
Hinweis: Das Lieferantenverzeichnis wird standardmäßig ignoriert. Im Allgemeinen müssen Sie das Verkäuferverzeichnis nicht überprüfen.
Geben Sie das Ausgangsformat an. Derzeit werden nur pretty und json unterstützt.
Geben Sie einen Konfigurationsdateinamen an. Dies ist nützlich, wenn Sie den anderen Dateinamen als .pahout.yaml in der Konfigurationsdatei verwenden möchten.
Mit Anmerkungen können Sie Hinweise für bestimmte Zeilen ignorieren. Geben Sie den Toolnamen an, den Sie mit @rebel ignorieren möchten.
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;Die folgenden Kommentare funktionieren auf die gleiche Weise.
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator Kazuma Watanabe