1. Go to this page and download the library: Download vuryss/dokky library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vuryss / dokky example snippets
class DataWithSchemaOverwrite
{
#[Property(
schema: new Schema(
description: 'Some description',
examples: ['test1', 'test2'],
enum: ['test1', 'test2', 'test3']
)
)]
public string $property;
}
$configuration = new \Dokky\Configuration(
considerNullablePropertiesAsNotRequired: true,
);
new Dokky\ClassSchemaGenerator\ClassSchemaGenerator(configuration: $configuration)
$componentsRegistry = new Dokky\ComponentsRegistry();
$componentsGenerator = new Dokky\ComponentsGenerator(
componentsRegistry: $componentsRegistry,
classSchemaGenerator: new Dokky\ClassSchemaGenerator\ClassSchemaGenerator(
componentsRegistry: $componentsRegistry,
),
);
$openApi = new Dokky\OpenApi\OpenApi(
openapi: '3.1.0',
info: new Dokky\OpenApi\Info(
title: 'Test API',
version: '1.0.0',
description: 'Auto generated documentation for Test API',
),
paths: [
'/user/{id}' => new Dokky\OpenApi\PathItem(
get: new Dokky\OpenApi\Operation(
operationId: 'get_user',
responses: [
'200' => new Dokky\OpenApi\Response(
description: 'User data',
content: [
'application/json' => new Dokky\OpenApi\MediaType(
schema: new Dokky\OpenApi\Schema(
ref: $componentsRegistry->getSchemaReference(User::class),
),
),
],
),
],
),
),
],
components: $componentsGenerator->generateComponents(),
);
$componentsRegistry = new Dokky\ComponentsRegistry();
// Register a class with a specific schema name
$userSchemaRef = $componentsRegistry->getNamedSchemaReference(
className: User::class,
schemaName: 'DetailedUserOutput'
); // Returns '#/components/schemas/DetailedUserOutput'
// You can still use the auto-generated name if needed elsewhere
$basicUserRef = $componentsRegistry->getSchemaReference(User::class); // Returns '#/components/schemas/User' (or similar if name conflicts)
// Use the named reference in your OpenAPI definition
$openApi = new Dokky\OpenApi\OpenApi(
// ... other properties
paths: [
'/user/{id}' => new Dokky\OpenApi\PathItem(
get: new Dokky\OpenApi\Operation(
responses: [
'200' => new Dokky\OpenApi\Response(
description: 'Detailed user data',
content: [
'application/json' => new Dokky\OpenApi\MediaType(
schema: new Dokky\OpenApi\Schema(ref: $userSchemaRef), // Use the named reference
),
],
),
],
),
),
],
// ... components generation will
$componentsRegistry = new Dokky\ComponentsRegistry();
$componentsGenerator = new Dokky\ComponentsGenerator(
componentsRegistry: $componentsRegistry,
classSchemaGenerator: new Dokky\ClassSchemaGenerator\ClassSchemaGenerator(
componentsRegistry: $componentsRegistry,
),
);
$openApi = new Dokky\OpenApi\OpenApi(
// ... other properties
components: $componentsGenerator->generateComponents(),
);
$usedClasses = $componentsRegistry->getUniqueClassNames();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.