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->frameworkVersion = '8.0'|'9.0'|'10.0'|'11.0'|... (optional, server mode)$config->httpClient = HttpClientAdapter::SymfonyHttpClient|Guzzle|Psr18 (client mode)$config->httpClientVersion = '6.4'|'7.0'|'7.8'|... (optional, client mode)frameworkVersion and httpClientVersion are optional string values you can set when generated code must react to framework- or transport-specific breaking changes. They are intended for template selection and conditional generation logic, similar to how $config->phpVersion is already used for PHP-specific output.
$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->verbosePluginWarnings$config->typedErrorResponses$config->generateSecuritySchemesFor x-* extension usage and custom plugin hooks, see Extension Plugins.
<?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->frameworkVersion = '8.0';
$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->httpClientVersion = '7.8';
$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.