PHP code formatter.
Warning
This project is not finished yet, work in progress.
You can install the package via composer:
composer require ghostwriter/phormatYou can also star (🌟) this repo to find it easier later.
vendor/bin/phormat <path> --dry-runwip - work in progress
<?php
declare(strict_types=1);
use Ghostwriter\Phormat\NodeVisitor\ChangeToShortArrayNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\DeclareStrictTypesNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\ImportFullyQualifiedNamesNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\MakeClosureAndFunctionStaticNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\PERCSNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortClassLikeMemberStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortClassLikeStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortMatchExpressionsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortUseStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\PhormatConfig;
/** @var non-empty-string $workingDirectory */
$workingDirectory = \getcwd() ?: __DIR__;
/** @psalm-suppress UncaughtThrowInGlobalScope */
return PhormatConfig::new()
->visitors([
PERCSNodeVisitor::class,
// ChangeToShortArrayNodeVisitor::class,
// DeclareStrictTypesNodeVisitor::class,
// ImportFullyQualifiedNamesNodeVisitor::class,
// MakeClosureAndFunctionStaticNodeVisitor::class,
// SortClassLikeMemberStatementsAlphabeticallyNodeVisitor::class,
// SortClassLikeStatementsAlphabeticallyNodeVisitor::class,
// SortMatchExpressionsAlphabeticallyNodeVisitor::class,
// SortUseStatementsAlphabeticallyNodeVisitor::class,
]);
->paths([
$workingDirectory . '/bin',
$workingDirectory . '/src',
$workingDirectory . '/tests'
])
->exclude([
PERCSNodeVisitor::class => [
$workingDirectory . '/resources',
],
$workingDirectory . '/.cache',
$workingDirectory . '/docs',
$workingDirectory . '/tests/fixture'
$workingDirectory . '/vendor',
]);
->phpVersion(8, 2); // To use a specific PHP version when parsing the codePlease see CHANGELOG.md for more information on what has changed recently.
Please see LICENSE for more information on the license that applies to this project.
Please see SECURITY.md for more information on security disclosure process.