This guide provides detailed installation instructions for PHP Builder Generator.
- PHP: 8.2 or higher
- Composer: 2.0 or higher
Install the library as a dev dependency — it is never needed at runtime:
composer require --dev maxbeckers/php-builder-generatorAfter 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 trueAdd 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/"]
}
}
}- The path must include the namespace (e.g.,
generated/php-builder-generator/App/) - Do not use just
generated/php-builder-generator/— builders won't be found - Each namespace requires its own entry
After updating, regenerate the autoload files:
composer dump-autoloadCreate 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-generatorCreate 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-generatorCheck 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 trueError: 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.phpError: ./vendor/bin/php-builder-generator: No such file or directory
Solutions:
- Check installation:
composer show maxbeckers/php-builder-generator - Reinstall:
composer install - Check permissions:
ls -la vendor/bin/php-builder-generator
Solutions:
- Verify plugin is allowed in
composer.json - Ensure
php-builder-generator.phpexists in the project root (or configureconfig-fileincomposer.jsonextra) - Check
autoGenerate(false)is not set in your config file
Error: Class 'App\Model\UserBuilder' not found
Solutions:
- Verify autoload configuration includes the namespace-specific path
- Run
composer dump-autoload - Confirm the generated file exists in the correct namespace directory
If you encounter issues:
- Search existing issues
- Create a new issue with:
- PHP version (
php --version) - Composer version (
composer --version) - Full error message
- Your
php-builder-generator.phpconfig
- PHP version (
Next: Basic Usage Guide
After updating your composer.json, regenerate the autoload files:
composer dump-autoloadCheck that the plugin is installed correctly:
composer show maxbeckers/php-builder-generatorCreate 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=testCheck 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 trueError: ./vendor/bin/php-builder-generator: No such file or directory
Solutions:
- Check installation:
composer show maxbeckers/php-builder-generator - Reinstall:
composer install --no-dev=false - Check permissions:
ls -la vendor/bin/php-builder-generator
Symptoms: Builders not generated during composer install/update
Solutions:
- Verify plugin is allowed in
composer.json - Check
auto-generateistruein configuration - Verify classes have
#[Builder]attribute - Check source directories are correct
Error: Permission denied when writing generated files
Solutions:
- Check write permissions on output directory
- Create output directory:
mkdir -p generated/php-builder-generator - Fix permissions:
chmod 755 generated/php-builder-generator
Error: Class 'UserBuilder' not found
Solutions:
- Verify autoload configuration includes namespace-specific path
- Run
composer dump-autoload - Check that the generated builders exist in the correct namespace directory
- Ensure the path format is
generated/php-builder-generator/YourNamespace/
If you encounter issues:
- Check the troubleshooting section
- Search existing issues
- Create a new issue with:
- PHP version (
php --version) - Composer version (
composer --version) - Full error message
- Your
composer.jsonconfiguration
- PHP version (
Next: Basic Usage Guide