This page covers the most important options in php-openapi-generator.php.
$config->specFile (default: openapi.yaml)$config->outputDir (default: generated)$config->phpVersion (default: 8.2)$config->modelNamespace (default: Generated\\Model)$config->modelOutputDir (default: Model)$config->apiNamespace (default: empty)$config->apiOutputDir (default: empty)$config->generationTarget = GenerationTarget::Server|Client$config->frameworkTarget = FrameworkTarget::None|Symfony|Laravel (server mode)$config->httpClient = HttpClientAdapter::SymfonyHttpClient|Guzzle|Psr18 (client mode)$config->generateConstructor (default: true)$config->phpReadonly (default: true)$config->generatePhpDoc (default: true)$config->generateFromArray (default: true)$config->generateToArray (default: true)$config->omitNullsInToArray (default: true)$config->splitReadWriteDtos (default: false)$config->dateTimeClass (default: DateTimeImmutable::class)$config->dateClass (default: DateTimeImmutable::class)$config->typeMapping (default: [])$config->propertyNaming (default: PropertyNaming::CamelCase)$config->classPrefix, $config->classSuffix$config->interfaceSuffix, $config->enumSuffix$config->reservedWordSuffix (default: _)$config->validationStrategy (ValidationStrategy::None|SymfonyConstraints|NativeMethod|LaravelValidation)$config->validateServerRequest$config->validateServerResponse$config->validateClientRequest$config->validateClientResponseThese four flags inject runtime validation calls in generated server/client API classes when validationStrategy is ValidationStrategy::NativeMethod, ValidationStrategy::SymfonyConstraints, or ValidationStrategy::LaravelValidation.
See Validation Strategies for behavior and recommended defaults.
Generate only selected operations and their reachable schema graph:
$config->includeTags, $config->excludeTags$config->includeOperationIds, $config->excludeOperationIds$config->includePaths, $config->excludePaths$config->autoGenerate (run on Composer hook)$config->addPlugin (enable plugin hook integration)$config->typedErrorResponses (client: throw Exception\ApiException subclasses per error status, see Client Generation)$config->generateSecuritySchemes (client: generate ApiCredentials and apply security schemes, see Client Generation)For x-* extension usage and custom plugin hooks, see Extension Plugins.
The Composer hook does nothing when no php-openapi-generator.php file is
present. Set either autoGenerate=false or addPlugin=false to disable
generation from post-autoload-dump.
Generation overwrites files with matching generated paths but does not remove
stale files left by schemas or operations removed from the specification. Run
vendor/bin/openapi-gen clean before generation when stale output must be
removed.
<?php
declare(strict_types=1);
use MaxBeckers\OpenApiGenerator\Config\FrameworkTarget;
use MaxBeckers\OpenApiGenerator\Config\GenerationTarget;
use MaxBeckers\OpenApiGenerator\Config\GeneratorConfig;
use MaxBeckers\OpenApiGenerator\Config\HttpClientAdapter;
use MaxBeckers\OpenApiGenerator\Config\ValidationStrategy;
$config = new GeneratorConfig();
$config->specFile = 'openapi.yaml';
$config->outputDir = 'generated';
$config->modelNamespace = 'App\\Model';
$config->apiNamespace = 'App\\Api';
$config->generationTarget = GenerationTarget::Server;
$config->frameworkTarget = FrameworkTarget::Symfony;
$config->phpReadonly = true;
$config->validationStrategy = ValidationStrategy::SymfonyConstraints;
$config->validateServerRequest = true;
// Client-only example when generating HTTP clients instead of server glue:
// $config->generationTarget = GenerationTarget::Client;
// $config->httpClient = HttpClientAdapter::Guzzle;
$config->includeTags = ['pets'];
$config->excludeOperationIds = ['deletePet'];
return $config;
--config=<path>--target=server|client--framework=none|symfony|laravel--http-client=symfony|guzzle|psr18For all properties and defaults, see src/Config/GeneratorConfig.php.