This guide provides detailed installation instructions for PHP Builder Generator.
Install the library as a dev dependency — it is never needed at runtime:
composer require --dev maxbeckers/php-builder-generator
After installation, allow the plugin in your composer.json:
{
"config": {
"allow-plugins": {
"maxbeckers/php-builder-generator": true
}
}
}
Why is this required? Composer 2.2+ requires explicit permission for plugins to run for security reasons.
Alternatively, allow the plugin during installation:
composer require --dev maxbeckers/php-builder-generator
composer config allow-plugins.maxbeckers/php-builder-generator true
Add the generated builder path to your autoload.psr-4 section. The path must include your namespace.
If your classes are in the App namespace:
{
"autoload": {
"psr-4": {
"App\\": ["src/", "generated/php-builder-generator/App/"]
}
}
}
Multiple namespaces:
{
"autoload": {
"psr-4": {
"App\\": ["src/", "generated/php-builder-generator/App/"],
"Domain\\": ["domain/", "generated/php-builder-generator/Domain/"]
}
}
}
generated/php-builder-generator/App/)generated/php-builder-generator/ — builders won’t be foundAfter updating, regenerate the autoload files:
composer dump-autoload
Create php-builder-generator.php in your project root:
<?php
// php-builder-generator.php
use MaxBeckers\PhpBuilderGenerator\Config\BuilderConfig;
use MaxBeckers\PhpBuilderGenerator\Config\PhpBuilderGeneratorConfig;
return PhpBuilderGeneratorConfig::configure()
->scanDirectory('src')
->outputDir('generated/php-builder-generator/')
->phpVersion('8.2');
See the Configuration Guide for all available options.
composer show maxbeckers/php-builder-generator
Create a test class (no imports needed!):
<?php
// src/Model/User.php
namespace App\Model;
class User
{
public function __construct(
public string $name,
public string $email
) {}
}
Run generation:
./vendor/bin/php-builder-generator
Check that the builder was created in generated/php-builder-generator/.
Error: maxbeckers/php-builder-generator contains a Composer plugin which is blocked
Solution:
composer config allow-plugins.maxbeckers/php-builder-generator true
Error: No config file found. Create php-builder-generator.php or use --config to specify a path.
Solution: Create php-builder-generator.php in your project root, or pass the path explicitly:
./vendor/bin/php-builder-generator --config path/to/php-builder-generator.php
Error: ./vendor/bin/php-builder-generator: No such file or directory
Solutions:
composer show maxbeckers/php-builder-generatorcomposer installls -la vendor/bin/php-builder-generatorSolutions:
composer.jsonphp-builder-generator.php exists in the project root (or configure config-file in composer.json extra)autoGenerate(false) is not set in your config fileError: Class 'App\Model\UserBuilder' not found
Solutions:
composer dump-autoloadIf you encounter issues:
php --version)composer --version)php-builder-generator.php configNext: Basic Usage Guide
After updating your composer.json, regenerate the autoload files:
composer dump-autoload
Check that the plugin is installed correctly:
composer show maxbeckers/php-builder-generator
Create a simple test class:
<?php
// test/TestUser.php
namespace Test;
use MaxBeckers\PhpBuilderGenerator\Attributes\Builder;
#[Builder]
class TestUser
{
public function __construct(
public string $name,
public string $email
) {}
}
Run generation:
./vendor/bin/php-builder-generator --src-dirs=test
Check that the builder was created in the output directory.
Add basic configuration to your composer.json:
{
"extra": {
"php-builder-generator": {
"src-dirs": ["src"],
"output-dir": "generated/php-builder-generator/",
"auto-generate": true
}
}
}
For more complex projects:
{
"extra": {
"php-builder-generator": {
"src-dirs": ["src", "app/Models", "lib"],
"output-dir": "generated/builders/",
"namespace-suffix": "\\Builder",
"php-version": "8.2",
"auto-generate": true
}
},
"config": {
"allow-plugins": {
"maxbeckers/php-builder-generator": true
}
}
}
Error: maxbeckers/php-builder-generator contains a Composer plugin which is blocked by your allow-plugins config
Solution: Add the plugin to your allow-plugins configuration:
composer config allow-plugins.maxbeckers/php-builder-generator true
Error: ./vendor/bin/php-builder-generator: No such file or directory
Solutions:
composer show maxbeckers/php-builder-generatorcomposer install --no-dev=falsels -la vendor/bin/php-builder-generatorSymptoms: Builders not generated during composer install/update
Solutions:
composer.jsonauto-generate is true in configuration#[Builder] attributeError: Permission denied when writing generated files
Solutions:
mkdir -p generated/php-builder-generatorchmod 755 generated/php-builder-generatorError: Class 'UserBuilder' not found
Solutions:
composer dump-autoloadgenerated/php-builder-generator/YourNamespace/If you encounter issues:
php --version)composer --version)composer.json configurationNext: Basic Usage Guide