PHPackages                             darkdarin/php-entity-renderer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. darkdarin/php-entity-renderer

ActivePackage[Utility &amp; Helpers](/categories/utility)

darkdarin/php-entity-renderer
=============================

Renderer helpers to make PHP code for classes, interfaces, traits and enums

v1.1.4(1y ago)11911BSD-3-ClausePHPPHP 8.2.\*|8.3.\*

Since Jan 27Pushed 1y ago1 watchersCompare

[ Source](https://github.com/darkdarin/php-entity-renderer)[ Packagist](https://packagist.org/packages/darkdarin/php-entity-renderer)[ RSS](/packages/darkdarin-php-entity-renderer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (6)Dependencies (3)Versions (7)Used By (1)

php-entity-renderer
===================

[](#php-entity-renderer)

Renderer helpers to make PHP code for classes, interfaces, traits and enums

Install
=======

[](#install)

```
composer require darkdarin/php-entity-renderer
```

Usage
=====

[](#usage)

Each renderer has method `render`, which generates a text representation of the entity.

This method need one parameter - `DarkDarin\PhpEntityRenderer\EntityAliases`. This object stores of collection of all usage aliases (of classes, enums, interfaces, traits) that are used within the current entity scope.

Also, same renderers have `renderDocBlock` method, which generate a text representation of the entity for DocBlock.

Renderers with `renderDocBlock` method:

- All type renderers (`ArrayTypeRenderer`, `BuiltinTypeRenderer`, `ClassTypeRenderer`, `IntersectTypeRenderer`, `NullableTypeRenderer`, `UnionTypeRenderer`)
- `ParameterRenderer`
- `PropertyRenderer`

Type Renderers
--------------

[](#type-renderers)

Renderers for generate correct types. All types have methods:

```
// Return new type renderer with nullable type
$nullableTypeRenderer = $typeRenderer->setNullable();
// Check current type is nullable
$typeRenderer->isNullable();
```

### BuiltinTypeRenderer

[](#builtintyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = BuiltinTypeRenderer::Float;
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
float
float

```

### ClassTypeRenderer

[](#classtyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\ClassTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new ClassTypeRenderer('\\App\\MyClass');
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
MyClass
MyClass

```

### ArrayTypeRenderer

[](#arraytyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\ArrayTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new ArrayTypeRenderer(BuiltinTypeRenderer::String);
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
array
list

```

### NullableTypeRenderer

[](#nullabletyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\NullableTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new NullableTypeRenderer(BuiltinTypeRenderer::String);
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
?string
string|null

```

### IntersectTypeRenderer

[](#intersecttyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\IntersectTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\ClassTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new IntersectTypeRenderer(
    new ClassTypeRenderer('\\App\\MyInterfaceOne'),
    new ClassTypeRenderer('\\App\\MyInterfaceTwo')
 );
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
MyInterfaceOne&MyInterfaceTwo
MyInterfaceOne&MyInterfaceTwo

```

### UnionTypeRenderer

[](#uniontyperenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\Types\UnionTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\ClassTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new UnionTypeRenderer(
    new ClassTypeRenderer('\\App\\MyClass'),
    BuiltinTypeRenderer::Int
 );
echo $renderer->render(new EntityAliases());
echo $renderer->renderDocBlock(new EntityAliases());
```

```
MyClass|int
MyClass|int

```

Entity Renderers
----------------

[](#entity-renderers)

Renderers for generate entities

Same entity renderers have special methods for set different modifiers.

#### Inheritance Modifier

[](#inheritance-modifier)

```
public function setInheritanceModifier(InheritanceModifierEnum $inheritanceModifier): self
public function getInheritanceModifier(): ?InheritanceModifierEnum
InheritanceModifierEnum::Abstract
InheritanceModifierEnum::Final
```

Can be used in:

- `ClassRenderer`
- `MethodRenderer`

#### Readonly Modifier

[](#readonly-modifier)

```
public function setReadonly(bool $isReadonly = true): self
public function isReadonly(): bool
```

Can be used in:

- `ClassRenderer`
- `ParameterRenderer`
- `PropertyRenderer`

#### Visibility Modifier

[](#visibility-modifier)

```
public function setVisibilityModifier(?VisibilityModifierEnum $visibilityModifier = null): self
public function getVisibilityModifier(): ?VisibilityModifierEnum
VisibilityModifierEnum::Public
VisibilityModifierEnum::Protected
VisibilityModifierEnum::Private
```

Can be used in:

- `MethodRenderer`
- `ParameterRenderer`
- `PropertyRenderer`
- `ConstantRenderer`

#### Static Modifiers

[](#static-modifiers)

```
public function setStatic(bool $isStatic = true): self
public function isStatic(): bool
```

Can be used in:

- `MethodRenderer`

### ValueRenderer

[](#valuerenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$myValue = [
  'some' => 'foo',
  'different' => 'bar',
];
$renderer = new ValueRenderer($myValue);
echo $renderer->render(new EntityAliases());
```

```
[
  'some' => 'foo',
  'different' => 'bar',
]
```

### ConstantRenderer

[](#constantrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\ConstantRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new ConstantRenderer('MY_CONST', new ValueRenderer(2345));
echo $renderer->render(new EntityAliases());
```

```
const MY_CONST = 2345;
```

### DocBlockRenderer

[](#docblockrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\DocBlockRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new DocBlockRenderer();
$renderer->addLine('My comment');
$renderer->addLine('@param int $foo My param');
echo $renderer->render(new EntityAliases());
```

```
/**
 * My comment
 * @param int $foo My param
 */
```

### AttributeRenderer

[](#attributerenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\AttributeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new AttributeRenderer('\\App\\MyAttribute', ['foo' => new ValueRenderer('bar')]);
echo $renderer->render(new EntityAliases());
```

```
#[MyAttribute(foo: 'bar')]
```

### PropertyRenderer

[](#propertyrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\PropertyRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new PropertyRenderer('myProperty', BuiltinTypeRenderer::Int);
$renderer->setDefault(new ValueRenderer(567));
echo $renderer->render(new EntityAliases());
```

```
public int $myProperty = 567;
```

### ParameterRenderer

[](#parameterrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\ParameterRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;

$renderer = new ParameterRenderer('myParameter', BuiltinTypeRenderer::Int);
$renderer->setDefault(new ValueRenderer(567));
echo $renderer->render(new EntityAliases());
```

```
int $myParameter = 567
```

### MethodRenderer

[](#methodrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\MethodRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ParameterRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Enums\VisibilityModifierEnum;

$parameterRenderer = new ParameterRenderer('myParameter', BuiltinTypeRenderer::Int);
$parameterRenderer->setDefault(new ValueRenderer(567));

$renderer = new MethodRenderer('myMethod');
$renderer->setVisibilityModifier(VisibilityModifierEnum::Public);
$renderer->addParameter($parameterRenderer);
echo $renderer->render(new EntityAliases());
```

```
/**
 * @param int $myParameter
 */
public function myMethod(int $myParameter = 567)
{}
```

### ClassRenderer

[](#classrenderer)

```
use DarkDarin\PhpEntityRenderer\Renderers\ClassRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\MethodRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ParameterRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\Types\BuiltinTypeRenderer;
use DarkDarin\PhpEntityRenderer\Renderers\ValueRenderer;
use DarkDarin\PhpEntityRenderer\EntityAliases;
use DarkDarin\PhpEntityRenderer\Enums\VisibilityModifierEnum;

$parameterRenderer = new ParameterRenderer('myParameter', BuiltinTypeRenderer::Int);
$parameterRenderer->setDefault(new ValueRenderer(567));

$methodRenderer = new MethodRenderer('myMethod');
$methodRenderer->setVisibilityModifier(VisibilityModifierEnum::Public);
$methodRenderer->addParameter($parameterRenderer);

$renderer = new ClassRenderer('\\App\\MyClassName');
$renderer->setReadonly();
$renderer->addMethod($methodRenderer);
echo $renderer->render(new EntityAliases());
```

```
