Skip to content

Symfony Console Commands

Complete reference of all Symfony Console commands for SimpleDto.

SimpleDto provides several console commands for Symfony:

  • make:dto - Create new Dtos
  • dto:typescript - Generate TypeScript types
  • dto:list - List all Dtos
  • dto:validate - Validate Dto structure
  • dto:cache - Cache validation rules
  • dto:clear - Clear validation cache

Create a new Dto class.

Terminal window
bin/console make:dto UserDto

Creates src/Dto/UserDto.php:

<?php
namespace App\Dto;
use event4u\DataHelpers\SimpleDto;
class UserDto extends SimpleDto
{
public function __construct(
public readonly int $id,
public readonly string $name,
) {}
}

Create a Dto with validation attributes:

Terminal window
bin/console make:dto CreateUserDto --validation

Creates:

<?php
namespace App\Dto;
use event4u\DataHelpers\SimpleDto;
use event4u\DataHelpers\SimpleDto\Attributes\Required;
use event4u\DataHelpers\SimpleDto\Attributes\Email;
class CreateUserDto extends SimpleDto
{
public function __construct(
#[Required]
public readonly string $name,
#[Required, Email]
public readonly string $email,
) {}
}

Create a resource Dto for API responses:

Terminal window
bin/console make:dto UserResourceDto --resource

Create Dto from existing Doctrine entity:

Terminal window
bin/console make:dto UserDto --entity=User

Overwrite existing Dto:

Terminal window
bin/console make:dto UserDto --force

Generate TypeScript types from Dtos.

Terminal window
bin/console dto:typescript

Generates TypeScript interfaces in assets/types/dtos.ts.

Specify output file:

Terminal window
bin/console dto:typescript --output=assets/types/api.ts

Watch for changes and regenerate automatically:

Terminal window
bin/console dto:typescript --watch

Specify export type:

Terminal window
bin/console dto:typescript --export=export # export interface
bin/console dto:typescript --export=declare # declare interface
bin/console dto:typescript --export= # no export

List all Dtos in the project.

Terminal window
bin/console dto:list

Output:

+------------------+------------------+------------+
| Dto | Namespace | Properties |
+------------------+------------------+------------+
| UserDto | App\Dto | 5 |
| CreateUserDto | App\Dto\Requests | 3 |
| UserResourceDto | App\Dto\Resources| 7 |
+------------------+------------------+------------+

Filter by namespace:

Terminal window
bin/console dto:list --namespace=App\\Dto\\Api

Validate Dto structure and configuration.

Terminal window
bin/console dto:validate UserDto

Checks:

  • Class exists
  • Extends SimpleDto
  • Properties are readonly
  • Validation attributes are valid
  • Type casts are valid
  • No circular dependencies

Validate all Dtos:

Terminal window
bin/console dto:validate --all

Attempt to fix common issues:

Terminal window
bin/console dto:validate UserDto --fix

Cache validation rules for better performance.

Terminal window
bin/console dto:cache

Caches validation rules for all Dtos, improving validation performance by up to 198x.

Clear cache before caching:

Terminal window
bin/console dto:cache --clear

Clear validation rule cache.

Terminal window
bin/console dto:clear

Clears all cached validation rules.

Terminal window
# Create request Dto
bin/console make:dto CreateUserDto --validation
# Create response Dto
bin/console make:dto UserResourceDto --resource
# Generate TypeScript
bin/console dto:typescript
Terminal window
# Create Dto from entity
bin/console make:dto OrderDto --entity=Order
# Validate structure
bin/console dto:validate OrderDto
# Generate TypeScript with watch
bin/console dto:typescript --watch
Terminal window
# Validate all Dtos
bin/console dto:validate --all
# Check TypeScript is up to date
bin/console dto:typescript --check
# Cache validation rules
bin/console dto:cache
Terminal window
# Clear old cache
bin/console dto:clear
# Cache validation rules
bin/console dto:cache
# Generate TypeScript
bin/console dto:typescript
Terminal window
bin/console make:dto UserDto && bin/console dto:validate UserDto
Terminal window
bin/console dto:typescript --watch &
Terminal window
# Always validate after creating Dtos
bin/console make:dto UserDto
bin/console dto:validate UserDto
Terminal window
# Add to deployment script
bin/console dto:cache
Terminal window
# Add to composer.json scripts
"scripts": {
"post-install-cmd": [
"@php bin/console dto:typescript"
]
}
Terminal window
# Add to CI/CD pipeline
bin/console dto:validate --all
bin/console dto:typescript --check