This guide provides detailed installation instructions for PHP Builder Generator.
composer require maxbeckers/php-builder-generator
After installation, you must 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, you can allow the plugin during installation:
composer require maxbeckers/php-builder-generator --with-dependencies
composer config allow-plugins.maxbeckers/php-builder-generator true
Required: You must add the generated builder path to your autoload.psr-4
section in composer.json
. The path must include your namespace.
If your classes are in the App
namespace:
{
"autoload": {
"psr-4": {
"App\\": ["src/", "generated/php-builder-generator/App/"]
}
}
}
If you have 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/
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-generator
composer install --no-dev=false
ls -la vendor/bin/php-builder-generator
Symptoms: Builders not generated during composer install/update
Solutions:
composer.json
auto-generate
is true
in configuration#[Builder]
attributeError: Permission denied
when writing generated files
Solutions:
mkdir -p generated/php-builder-generator
chmod 755 generated/php-builder-generator
Error: Class 'UserBuilder' not found
Solutions:
composer dump-autoload
generated/php-builder-generator/YourNamespace/
If you encounter issues:
php --version
)composer --version
)composer.json
configurationNext: Basic Usage Guide