PHP code formatter.
Warning
This project is not finished yet, work in progress.
You can install the package via composer:
composer require ghostwriter/phormat
You can also star (🌟) this repo to find it easier later.
vendor/bin/phormat <path> --dry-run
wip - 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 code
Please 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.