konradmichalik / php-doc-block-header-fixer
This package contains a PHP-CS-Fixer rule to automatically fix the class header regarding PHP DocBlocks.
Installs: 8 045
Dependents: 13
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 1
pkg:composer/konradmichalik/php-doc-block-header-fixer
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0
- ext-tokenizer: *
- friendsofphp/php-cs-fixer: ^3.14
Requires (Dev)
- armin/editorconfig-cli: ^1.0 || ^2.0
- eliashaeussler/rector-config: ^3.0
- ergebnis/composer-normalize: ^2.44
- konradmichalik/php-cs-fixer-preset: ^0.1.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^10.2 || ^11.0 || ^12.0
This package is auto-updated.
Last update: 2025-10-20 19:39:16 UTC
README
Php DocBlock Header Fixer
This packages contains a PHP-CS-Fixer rule to automatically fix the header regarding PHP DocBlocks for classes, interfaces, traits and enums.
Before:
<?php class MyClass { public function myMethod() { // ... } } interface MyInterface {} trait MyTrait {} enum MyEnum {}
After:
<?php /** * MyClass. * * @author Your Name <your@email.org> * @license GPL-3.0-or-later */ class MyClass { // ... }
🔥 Installation
composer require --dev konradmichalik/php-doc-block-header-fixer
⚡ Usage
Add the PHP-CS-Fixer rule in your .php-cs-fixer.php
file:
Note
This fixer is compatible with standard PHP-CS-Fixer rules. It avoids adding annotations that conflict with rules like phpdoc_no_package
and follows spacing conventions compatible with phpdoc_separation
.
<?php // ... return (new PhpCsFixer\Config()) // ... ->registerCustomFixers([ new KonradMichalik\PhpDocBlockHeaderFixer\Rules\DocBlockHeaderFixer() ]) ->setRules([ 'KonradMichalik/docblock_header_comment' => [ 'annotations' => [ 'author' => 'Konrad Michalik <hej@konradmichalik.dev>', 'license' => 'GPL-3.0-or-later', ], 'preserve_existing' => true, 'separate' => 'none', 'add_structure_name' => true, ], ]) ;
Alternatively, you can use a object-oriented configuration:
<?php // ... return (new PhpCsFixer\Config()) // ... ->registerCustomFixers([ new KonradMichalik\PhpDocBlockHeaderFixer\Rules\DocBlockHeaderFixer() ]) ->setRules([ KonradMichalik\PhpDocBlockHeaderFixer\Generators\DocBlockHeader::create( [ 'author' => 'Konrad Michalik <hej@konradmichalik.dev>', 'license' => 'GPL-3.0-or-later', ], preserveExisting: true, separate: \KonradMichalik\PhpDocBlockHeaderFixer\Enum\Separate::None, addStructureName: true )->__toArray() ]) ;
Or even simpler, automatically read all authors and license from your composer.json
:
<?php // ... return (new PhpCsFixer\Config()) // ... ->registerCustomFixers([ new KonradMichalik\PhpDocBlockHeaderFixer\Rules\DocBlockHeaderFixer() ]) ->setRules([ KonradMichalik\PhpDocBlockHeaderFixer\Generators\DocBlockHeader::fromComposer()->__toArray() ]) ;
⚙️ Configuration
annotations
(array): DocBlock annotations to add to classespreserve_existing
(boolean, default: true): Keep existing DocBlock annotationsseparate
(string, default: 'none'): Add blank lines ('top', 'bottom', 'both', 'none')add_structure_name
(boolean, default: false): Add class name as first line in DocBlockensure_spacing
(boolean, default: true): Ensure proper spacing after DocBlocks to prevent conflicts with PHP-CS-Fixer rules
🧑💻 Contributing
Please have a look at CONTRIBUTING.md
.
⭐ License
This project is licensed under GNU General Public License 3.0 (or later).