prometee/php-class-generator

PHP class generator

v1.0.10 2023-12-05 20:33 UTC

This package is auto-updated.

Last update: 2024-04-05 21:15:49 UTC


README

Latest Version on Packagist Software License Build Status Quality Score

PHP8 class generator

This library generate PHP8 classes.

Installation

Install using Composer :

$ composer require prometee/php-class-generator

Usage

Create your PhpGenerator, an example can be found here :

DummyPhpGenerator.php

Then instantiate :

$loader = require_once( __DIR__.'/vendor/autoload.php');

use Doctrine\Common\Annotations\Annotation\Required;
use Prometee\PhpClassGenerator\Builder\ClassBuilder;
use Prometee\PhpClassGenerator\Builder\Model\ModelFactoryBuilder;
use Prometee\PhpClassGenerator\Builder\View\ViewFactoryBuilder;
use Prometee\PhpClassGenerator\Model\PhpDoc\PhpDocInterface;

// Create your own Php Generator
final class MyPhpGenerator implements PhpGeneratorInterface {
    use PhpGeneratorTrait;
}

$path = __DIR__ . '/etc/build/Dummy';
$namespace = 'Tests\\Prometee\\PhpClassGenerator\\Resources';
$classConfig = [
    [
        'class' => 'MyClass',
        'type' => 'final',
        'extends' => stdClass::class,
        'phpdoc' => [
            PhpDocInterface::TYPE_DESCRIPTION => [
                'My own class description',
                'with multiple lines',
            ],
        ],
        'properties' => [
            [
                'name' => 'myProperty',
                'types' => [
                    'null',
                    $namespace . '\\MyClass[]',
                ],
                'default' => null,
                'description' => null,
                'phpdoc' => [
                    PhpDocInterface::TYPE_DESCRIPTION => [
                        'My description',
                        'My description line 2',
                    ],
                    sprintf('\\%s()', Required::class) => [''] // An annotation
                ],
            ],
        ],
    ],
];

$dummyPhpGenerator = new MyPhpGenerator(
    new ClassBuilder(
        new ModelFactoryBuilder(),
        new ViewFactoryBuilder()
    )
);

// Configure the generator first
$dummyPhpGenerator->configure(
    $path,
    $namespace,
    $classConfig
);

// Then generate
$dummyPhpGenerator->generate();

Results example

tests/Resources