PHPackages                             phpactor/code-builder - 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. phpactor/code-builder

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

phpactor/code-builder
=====================

Generating and modifying source code

0.4.3(4y ago)863.1k↑93.3%52MITPHPPHP ^7.3 || ^8.0

Since Jul 18Pushed 4y ago3 watchersCompare

[ Source](https://github.com/phpactor/code-builder)[ Packagist](https://packagist.org/packages/phpactor/code-builder)[ RSS](/packages/phpactor-code-builder/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (11)Versions (19)Used By (2)

Code Builder
============

[](#code-builder)

[![CI](https://github.com/phpactor/code-builder/workflows/CI/badge.svg)](https://github.com/phpactor/code-builder/workflows/CI/badge.svg)

This library can be used to *generate* or idempotently *add* **classes**, **methods**, **properties**, **use statements**, etc. to existing source code using *prototypes*.

A prototype is an object which defines structural code elements.

Usage
-----

[](#usage)

The library provides a source code prototype builder:

```
$builder = SourceBuilder::create()
    ->namespace('Animals');
    ->use('Measurements\\Height');
    ->class('Rabbits')
        ->extends('Leopridae')
        ->property('force')
            ->visibility('private')
            ->type('int')
            ->defaultValue(5)
        ->end()
        ->method('jump')
            ->parameters()
                ->parameter('how')
                    ->default('high')
                    ->type('Height')
                ->end();
            ->end()
        ->end()
    ->end();

$sourcePrototype = $builder->build();
```

the above prototype can either be used to generate a new class:

```
$renderer = new TwigRenderer();
$renderer->render($sourcePrototype);
```

Or it can be applied to an existing source code, given the following:

```
