symfony-components

Complete reference for all 38 Symfony components — patterns, APIs, configuration, and best practices for PHP 8.3+ and Symfony 7.x.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "symfony-components" with this command: npx skills add krzysztofsurdy/code-virtuoso/krzysztofsurdy-code-virtuoso-symfony-components

Symfony Components

Complete reference for all 38 Symfony components — patterns, APIs, configuration, and best practices for PHP 8.3+ and Symfony 7.x.

Component Index

HTTP & Runtime

  • HttpFoundation — Object-oriented HTTP requests/responses replacing PHP globals → reference

  • HttpKernel — Request handling, kernel events, controller resolution, middleware → reference

  • PSR-7 Bridge — Bidirectional HttpFoundation ↔ PSR-7 conversion → reference

  • Runtime — Decoupled bootstrapping for multiple runtime environments → reference

Messaging

  • Messenger — Sync/async message buses, transports (AMQP, Redis, Doctrine), middleware, envelopes → reference

Console

  • Console — CLI commands, input/output handling, helpers, formatters, progress bars → reference

Dependency Injection

  • DependencyInjection — Service container, autowiring, compiler passes, tagged services → reference

  • Contracts — Decoupled abstractions for interoperability (Cache, EventDispatcher, HttpClient, etc.) → reference

Forms & Validation

  • Form — Form creation, field types, events, data transformers, collections, theming → reference

  • Validator — JSR-303 constraints, custom validators, groups, severity levels → reference

  • OptionsResolver — Option configuration with defaults, validation, normalization, nesting → reference

Cache, Lock & Semaphore

  • Cache — PSR-6/PSR-16 adapters, tag-based invalidation, stampede prevention → reference

  • Lock — Exclusive resource locking across processes/servers (Redis, PostgreSQL, file) → reference

  • Semaphore — Concurrent access with configurable limits (Redis, DynamoDB) → reference

Events & Workflow

  • EventDispatcher — Observer/Mediator patterns, listeners, subscribers, priorities → reference

  • Workflow — State machines, workflow transitions, guards, metadata, events → reference

Configuration & Expressions

  • Config — Configuration loading, validation, caching, tree building, bundle config → reference

  • ExpressionLanguage — Safe expression sandbox for business rules, validation, security → reference

  • Yaml — YAML parsing, dumping, linting with full data type support → reference

Filesystem, Finder & Process

  • Filesystem — Platform-independent file/directory operations, atomic writes, path utils → reference

  • Finder — File search with fluent criteria (name, size, date, depth, content) → reference

  • Process — Secure system command execution, async processes, output streaming → reference

Serialization & Types

  • PropertyAccess — Read/write objects and arrays via string paths (foo.bar[baz] ) → reference

  • PropertyInfo — Property metadata extraction (types, access, descriptions) → reference

  • TypeInfo — PHP type extraction, resolution, and validation → reference

  • VarDumper — Enhanced variable debugging with HTML/CLI formatters → reference

  • VarExporter — Export PHP data to OPcache-optimized code, lazy ghost/proxy objects → reference

Testing

  • BrowserKit — Simulated browser for programmatic HTTP, cookies, history → reference

  • DomCrawler — HTML/XML traversal, CSS selectors, form automation → reference

  • CssSelector — CSS-to-XPath conversion for DOM querying → reference

  • PHPUnit Bridge — Deprecation reporting, time/DNS mocking, parallel tests → reference

Data & Text Utilities

  • Uid — UUID (v1–v8) and ULID generation, conversion, Doctrine integration → reference

  • Clock — Testable time abstraction with MockClock and DatePoint → reference

  • Intl — Internationalization data (languages, countries, currencies, timezones) → reference

  • JsonPath — RFC 9535 JSONPath queries on JSON structures → reference

  • Mime — MIME message creation for emails and content types → reference

  • Ldap — LDAP/Active Directory connections, queries, and management → reference

  • Asset — URL generation and versioning for web assets → reference

Quick Patterns

Dependency Injection (Autowiring)

services.yaml — most services are autowired automatically

services: _defaults: autowire: true autoconfigure: true App: resource: '../src/' exclude: '../src/{DI,Entity,Kernel.php}'

Define a Route + Controller

use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route;

class ArticleController { #[Route('/articles/{id}', methods: ['GET'])] public function show(int $id): Response { return new Response("Article $id"); } }

Dispatch a Message (Async)

use Symfony\Component\Messenger\MessageBusInterface;

class OrderService { public function __construct(private MessageBusInterface $bus) {}

public function place(Order $order): void
{
    $this->bus->dispatch(new OrderPlaced($order->getId()));
}

}

Create and Validate a Form

$form = $this->createForm(ArticleType::class, $article); $form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) { $em->persist($form->getData()); $em->flush(); return $this->redirectToRoute('article_list'); }

Cache with Tags

use Symfony\Contracts\Cache\ItemInterface;

$value = $cache->get('products_list', function (ItemInterface $item) { $item->expiresAfter(3600); $item->tag(['products']); return $this->repository->findAll(); });

$cache->invalidateTags(['products']);

Console Command

use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface;

#[AsCommand(name: 'app:process', description: 'Process items')] class ProcessCommand extends Command { protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('Processing...'); return Command::SUCCESS; } }

Event Subscriber

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class OrderSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [OrderPlacedEvent::class => 'onOrderPlaced']; }

public function onOrderPlaced(OrderPlacedEvent $event): void
{
    // Handle event
}

}

Workflow Transition

if ($workflow->can($article, 'publish')) { $workflow->apply($article, 'publish'); }

Lock a Resource

$lock = $factory->createLock('pdf-generation', ttl: 30); if ($lock->acquire()) { try { generatePdf(); } finally { $lock->release(); } }

Best Practices

  • Target PHP 8.3+ and Symfony 7.x with strict typing

  • Use attributes over YAML/XML for routes, commands, message handlers, event listeners

  • Prefer autowiring — only register services manually when configuration is needed

  • Use Cache Contracts ($cache->get() ) over raw PSR-6 for stampede prevention

  • Apply validation groups to support multiple form contexts

  • Use state machines by default; use workflows only when parallel states are needed

  • Create custom constraints for business logic that can't be expressed with built-in ones

  • Mock time and DNS in tests using PHPUnit Bridge for deterministic results

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

solid

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

refactoring

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

design-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

testing

No summary provided by upstream source.

Repository SourceNeeds Review