ruudk/code-generator

A library for generating beautiful PHP code with automatic namespace import management.

0.0.1 2025-08-08 14:13 UTC

This package is auto-updated.

Last update: 2025-08-08 14:14:50 UTC


README

Latest Stable Version PHP Version Require Total Downloads License

Code Generator

A library for generating beautiful PHP code with automatic namespace import management.

Installation

Install the library via Composer:

composer require ruudk/code-generator

Example

<?php

declare(strict_types=1);

use Ruudk\CodeGenerator\CodeGenerator;
use Ruudk\CodeGenerator\Group;

include '../vendor/autoload.php';

$generator = new CodeGenerator('Example\Demo');

echo $generator->dump([
    '// Auto-generated example file',
    '',

    $generator->dumpAttribute('Example\Attributes\Something'),
    sprintf(
        'final readonly class %s extends %s {',
        $generator->import('Example\Demo'),
        $generator->import('Example\Parent'),
    ),
    Group::indent(1, function() use ($generator) {
        yield 'public function __construct(';
        yield Group::indent(1, function () use ($generator) {
            yield sprintf('private %s $date,', $generator->import(DateTimeImmutable::class));
        });
        yield ') {';
        yield Group::indent(1, function () use ($generator) {
            yield $generator->dumpCall('parent', '__construct', [
                "'Hello, World!'",
                "true",
            ], true);
        });
        yield '}';
    }),
    '}',
]);

Output

<?php

declare(strict_types=1);

namespace Example\Demo;

use DateTimeImmutable;
use Example\Attributes\Something;
use Example\Demo;
use Example\Parent;

// Auto-generated example file

#[Something]
final readonly class Demo extends Parent {
    public function __construct(
        private DateTimeImmutable $date,
    ) {
        parent::__construct(
            'Hello, World!',
            true,
        )
    }
}

Development

Running Tests

vendor/bin/phpunit

Static Analysis

vendor/bin/phpstan analyse

Code Style

vendor/bin/php-cs-fixer fix

License

This library is released under the MIT License. See the LICENSE file for details.