Skip to content

Phormat

Automation PHP Version Packagist Downloads PayPal Sponsors via GitHub

PHP code formatter.

Warning

This project is not finished yet, work in progress.

Installation

You can install the package via composer:

composer require ghostwriter/phormat

Star ⭐️ this repo if you find it useful

You can also star (🌟) this repo to find it easier later.

Usage

vendor/bin/phormat <path> --dry-run

Configuration

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

Credits

Changelog

Please see CHANGELOG.md for more information on what has changed recently.

License

Please see LICENSE for more information on the license that applies to this project.

Security

Please see SECURITY.md for more information on security disclosure process.

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

Generated from ghostwriter/wip