Una settimana di Symfony #1031 (28 settembre – 4 ottobre 2026) (Symfony Blog)
Questa settimana sono state rilasciate le versioni 6.4.47, 7.4.20 e 8.1.8 di Symfony, insieme a Symfony Reprise 1.3.0. Nel frattempo, abbiamo continuato a presentare le funzionalità di Symfony 8.2, tra cui il login OpenID Connect, le email firmate e cifrate PGP/MIME, la sudo mode, gruppi di serializzazione più flessibili e miglioramenti delle prestazioni. Infine, abbiamo annunciato altri talk per la SymfonyCon Warsaw 2026.
Questa settimana sono state unite 364 pull request (191 nel codice, 63 nella documentazione, 101 in UX e 9 in AI) e sono state chiuse 92 issue (33 nel codice, 47 nella documentazione, 8 in UX e 4 in AI). Escludendo i merge, 67 autori hanno effettuato aggiunte e rimozioni. Vedi i dettagli per codice, documentazione, UX e AI.
- 7a9b164: [Serializer] corretta la cache key di MetadataAwareNameConverter quando il contesto non può essere serializzato
- a7fe780: [FrameworkBundle] disabilitato il push HTTP/2 sul client HTTP predefinito
- 410b9c3: [HttpKernel] corretto il livello di log delle eccezioni mappate a un codice di stato HTTP
- 7e59fe0: [Serializer] non includere l'id della traccia di debug nella cache key degli attributi
- 243d173: [DoctrineBridge] non considerare mai un oggetto come tipo di chiave di una collection
- 2b7cf91: [WebProfilerBundle] effettuato l'escape della sorgente del diagramma del workflow e della mappa dei listener nel profiler
- cfbee39: [DoctrineBridge] non mappare i nomi dei tipi uuid e ulid alle classi uid in DoctrineExtractor
- 983d5a5: [Cache] effettuato l'escape dei caratteri glob durante la pulizia dei namespace Redis
- 35f513e: [DependencyInjection] esportare il service id quando si condivide un servizio wither circolare
- f8e2d14: [FrameworkBundle] corretta la descrizione di un secret di routing webhook vuoto
- 60cf683: [DependencyInjection, Routing] effettuato l'escape degli identificatori nel PHP generato
- ce086d4: [DependencyInjection] tenere traccia dei placeholder env riutilizzati dopo che un'estensione precedente li ha eliminati
- b530685: [String] aggiornati i dati di wcswidth con Unicode 18
- 3172f3f: [String] corretta la larghezza delle sequenze emoji e dei jamo Hangul congiungenti
- be608ca: [Messenger] corretta la decodifica di ErrorDetailsStamp con Serializer::create()
- af9e4e4: [HttpClient] limitato il timeout passato a curl_multi_select()
- 6ad469d: [Messenger] corretta la decodifica di ErrorDetailsStamp con il formato XML
- 6aa5b27: [Messenger] non inviare i risultati degli handler ai transport
- db66f78: [Messenger] convertire qualsiasi errore generato durante la decodifica in una MessageDecodingFailedException
- c588108: [Messenger] corretta la decodifica in XML di un ErrorDetailsStamp che non ha FlattenException
- fe8998a: [Messenger] corretta la decodifica in XML di un ValidationStamp che ha un gruppo o nessuno
- fff4db5: [Messenger] corretto il riconoscimento di un errore ripetuto quando il suo codice non conserva il tipo in XML
- 82fab8a: [Messenger] corretta la decodifica di un ValidationStamp che contiene una GroupSequence
- 983971e: [HttpFoundation] corretta HeaderUtils::split() quando un separatore è un carattere di spaziatura
- c2aee89: [String] corretta width() dei toni della pelle su basi keycap e text-default, e dei caratteri di formato
- 7a5c6a7: [Messenger] corretta la migrazione di un messaggio tra transport che usano formati di serializzazione diversi
- e465d45: [String] corretta width() delle sequenze OSC terminate da BEL
- 16c8fdb: [String] corretta width() delle sequenze di escape con un byte intermedio o un byte finale numerico
- 2a5c8f7: [Yaml] corretto il round-trip dei blocchi letterali che iniziano con righe di soli spazi
- 32d3f8e: [PhpUnitBridge] rimossa la soppressione dei deprecation di __sleep/wakeup()
- 4800ae8: [Messenger] rifiutare i messaggi decodificati che contengono stamp non inviabili e convalidare gli stamp degli envelope non serializzati
- f4d6d8b: [Messenger] consigliare di non decodificare gli stamp non inviabili in SerializerInterface::decode()
- 47ec709: [HttpFoundation] mantenere l'ID di sessione quando l'handler di sessione non riesce a leggere
- e763561: [Yaml] corretto il dump dei blocchi letterali multilinea con tag
- 513e96d: [Messenger] corretta la perdita di messaggi ritardati quando si ritenta il messaggio che li ha inviati
- 3614876: [Messenger] corretto il transport Doctrine che mascherava i fallimenti di commit
- beb4c9c: [Security] passare solo attributi della request convertibili in stringa al generatore di URL in HttpUtils
- 68051a6: [FrameworkBundle] non elencare gli alias dei servizi astratti in
debug:autowiring - ec54b1e: [Yaml] racchiudere tra virgolette le stringhe .inf e .nan durante il dump
- 132867d: [String] corretta wordwrap() con $cut quando la stringa termina con il carattere di interruzione
- 30802f4: [JsonStreamer] corretta la sostituzione dei tipi generici negli array shape
- ad7c073: [TypeInfo] corretta accepts() dei tipi union e intersection
- 03654e1: [TypeInfo] corretta la risoluzione delle stringhe tra virgolette con phpstan/phpdoc-parser 1.x
- 489d20d: [Serializer, Validator] corretta la scoperta in fase di compilazione degli attributi su membri non pubblici
- bb5fdd6: [HtmlSanitizer] corretta sanitizeFor() con contesti relativi a table, image e plaintext
- f25ca4f: [HtmlSanitizer] non renderizzare i commenti come elementi quando l'azione predefinita è Allow
- 21e5e2a: [TypeInfo] corretta la stampa delle chiavi di array shape che contengono virgolette o backslash
- c462177: [JsonStreamer] corretta la sostituzione dei template con mixed nei tipi union
- c2e593d: [ObjectMapper] costruire i target lazy-ghost annidati quando il mapper è decorato
- 94e5b55: [TypeInfo] corretta Type::union() con mixed come unico tipo non-null
- 0c4996e: [PropertyInfo] corretta la risoluzione delle stringhe tra virgolette in PhpStanExtractor con phpstan/phpdoc-parser 1.x
- 6321df0: [TypeInfo] corretta la ricorsione infinita sugli alias di tipo ricorsivi
- fb7d2b3: [Security] assegnare a ogni ruolo il proprio nodo nel dump Mermaid
- 3571209: [JsonStreamer] corretti i reader e i writer generati per nomi che contengono virgolette
- a3f66cc: [Cache] associare i namespace nell'invalidazione della cache basata su PDO
- 7dcbcde: [Security] associare le chiavi OIDC scoperte agli issuer
- 43dce2d: [JsonStreamer] effettuato l'escape dei tipi nei commenti PHP generati
- 41e11de: [Messenger] impedire a PhpSerializer::getMessageType() di fare autoload delle classi
- ee2ab09: [Mailer, Sweego] inviare l'indirizzo Reply-To tramite il campo dedicato dell'API
- 9ef2936: usare il nome completo dell'impostazione nel messaggio di deprecation per coerenza
- d6f029e: [Messenger] corretta l'interruzione dei worker su messaggi che non superano la verifica della firma
- 722eb74: [Mailer, Sweego] accettare i secondi frazionari nei timestamp dei webhook
- 8d7dadc: [Lock] corretta la denormalizzazione in XML di una Key che non ha scadenza né stato
- 78b2cea: [Messenger] corretto il salto di un messaggio che non ha un transport originale in
messenger:failed:retry - d8cb531: [FrameworkBundle, Messenger, Scheduler] richiedere una firma per RedispatchMessage e ServiceCallMessage
- 6d25294: [Mailer, MicrosoftGraph] inoltrare solo gli header che Graph può accettare
- 990636b: [HttpClient] corretto l'uso di HTTP/3 con CurlHttpClient
- ffc1b79: [JsonPath] corretti i selettori index e slice che scartavano gli elementi null dell'array
- 8881c9c: [JsonPath] corretti l'ancoraggio e l'escape degli slash in match() e search()
- 6b8537d: [Scheduler] corretta processOnlyLastMissedRun() che saltava ogni run persa dopo un riavvio
- c505a39: [DependencyInjection, FrameworkBundle] corretta la descrizione dei servizi che hanno argomenti closure env
- 6dc4600: [TypeInfo] corretta la risoluzione delle chiavi di object shape in StringTypeResolver
- 963994d: [TypeInfo] corretta la stampa delle chiavi di object shape che contengono virgolette o backslash
- abce89e: [JsonStreamer] corretta la sostituzione dei tipi generici negli object shape
- 739581a: [FrameworkBundle] richiedere symfony/dependency-injection ^8.1.8
- 82c3ec2: [Tui] ridisegnare il viewport senza pulire lo schermo quando il contenuto in overflow si riduce
- 335148d: [Tui] disegnare sul posto le righe già nello scrollback quando il contenuto in overflow torna a crescere
- 55d26ca: [JsonStreamer] esportare il tipo come letterale nel messaggio di errore di codifica generato
- 2e56795: [Tui] corretta la suddivisione in slice che contava un combining mark come una colonna
- 0c3f6ee: [Messenger] mantenere la firma dei messaggi firmati che non riescono a essere decodificati
- ccfe5b6: [Messenger] non ritentare i messaggi rifiutati a causa della loro firma
- a6d9000: [Tui] misurare una sequenza emoji ZWJ, modifier o tag come due colonne
- 6fd896e: [Messenger] corretta l'ack dei messaggi che InMemoryTransport non riesce a decodificare
- 42952ca: [Messenger] corretti i retry infiniti di messaggi con body vuoto o header di stamp non decodificabile
- 0eef6c7: [Messenger] corretti gli stamp duplicati quando un messaggio che non era stato decodificato viene decodificato durante il replay
- bba9ddb: [Messenger] corretta la perdita del payload di un messaggio senza header di tipo quando viene ritentato
- 00d18e6: [Messenger] corretti ack/reject dei messaggi Redis elencati dai comandi dei messaggi falliti
- 1cf261c: [Messenger] instradare al proprio bus un messaggio che PhpSerializer non riesce a decodificare
- d060748: [Tui] corretta wrapLineIntoChunks() che restituiva un chunk più largo della larghezza dopo il wrapping su uno spazio
- fc6822c: [Tui] assegnare larghezza zero ai caratteri di formato e ai combining mark isolati
- 3217edf: [Messenger] aggiungere gli stamp predefiniti di un messaggio al suo fallimento di decodifica riprodotto
- 1db8c7c: [Tui] corretti parse() e matches() dei tasti funzione modificati
- 6cebc11: [Tui] far corrispondere un escape modificato che parse() nomina
- 296470b: [PropertyInfo] creare l'inflector e il type resolver di ReflectionExtractor al primo utilizzo
- 91cdb3d: [TypeInfo] analizzare il docblock della classe una sola volta durante la creazione di un type context
- 7d66574: [Cache] clonare le chiamate di CacheDataCollector una volta per profile
- 8c4eb68: [AssetMapper] caricare ogni asset in cache una volta per request e da un unico file
- 720a5ef: [TwigBundle] saltare i template già preriscaldati con un altro nome
- 343fa46: [HttpKernel] calcolare il comando cURL di RequestDataCollector in lateCollect()
- 245ca50: [AssetMapper, FrameworkBundle, WebProfilerBundle] non costruire né il profiler né Twig quando il dev server serve un asset
- 8d581ad: [FrameworkBundle] costruire gli alberi di configurazione una sola volta per reference.php e schema.json
- b73db07: [PropertyInfo] analizzare il docblock del costruttore una sola volta per classe
- 8823b6f: [Serializer] ridurre l'overhead per attributo nella normalizzazione degli oggetti
- f606ec9: [Serializer] velocizzare la conversione dei nomi durante la normalizzazione degli oggetti
- 1248d08: [PropertyInfo, Serializer, Validator] preriscaldare le property info per le classi mappate dal serializer e dal validator
- 590ba12: [HtmlSanitizer] saltare il parsing del testo semplice
- 9b9212a: [Serializer] aggregare le chiamate annidate in SerializerDataCollector man mano che avvengono
- 0ffd5b3: [HttpKernel] registrare gli errori client a livello warning invece che error
- d827566: [HttpKernel] registrare le eccezioni senza appiattirle (flattening)
- 69cf483: [Validator] riutilizzare l'IntlDateFormatter di ConstraintValidator::formatValue()
- 93a532a: [PropertyAccess] ridurre l'overhead della lettura delle proprietà
- 7020f70: [Serializer] cercare i parametri del costruttore prima delle property info durante la denormalizzazione
- c43fb8c: [Serializer] non leggere i file delle classi quando si risolvono i tipi dei parametri del costruttore
- ae2f63b: [HttpKernel] raccogliere i dati statici di ConfigDataCollector in lateCollect()
- c0bc6eb: [SecurityBundle] spostare il lavoro statico di SecurityDataCollector in lateCollect()
- f5e38b5: conflitto con pacchetti Symfony UX obsoleti quando si richiede symfony/symfony
- 659cd62: [TwigBundle] preriscaldare solo i form theme raggiungibili
- 0447e59: [FrameworkBundle, HttpKernel] saltare la risoluzione della modalità runtime sulle richieste web
- d3b022a: [DependencyInjection] saltare la codifica dei valori ASCII semplici in XmlDumper
- d49cb69: [Serializer] non creare un property accessor per ogni oggetto denormalizzato
- 6686941: [TypeInfo, Serializer, JsonStreamer] aggiunta Type::map()
- 1eba7ce: [KeyManagement] registrare l'ARN della chiave restituito da AWS KMS nei ciphertext
- 9c6ba22: [Translation] estrarre i messaggi da espressioni match, stringhe interpolate, variabili e valori di ritorno dei metodi
- f212f28: [HttpClient] consentire campi ripetuti nelle opzioni query e body
- df1286f: [Validator] rendere invokable gli oggetti Constraint
- 3b94fb1: [SecurityBundle] corretto il diagramma della gerarchia dei ruoli nel profiler
- 0a71f5f: [Messenger] consentire l'uso di un serializer con nome per messenger.transport.symfony_serializer
- 775c1c2: [FrameworkBundle] consentire l'uso di un serializer con nome per #[MapRequestPayload], #[MapQueryString] & #[Serialize]
- a4916cb: [Mailer, Scaleway] associare le richieste webhook all'ARN del topic configurato
- a1bff76: [String] saltare la misurazione della larghezza carattere per carattere per l'ASCII stampabile
- 7eaf80c: [KeyManagement] rifiutare i valori di colonna vuoti nel tipo DBAL
- 4732193: [Messenger] corretta la ridistribuzione di un messaggio che non è stato decodificato
- 977b90b: [Messenger] ritentare un claim che non è stato possibile recuperare con il suo riferimento originale
- a6d7e84: [Security] permettere ai voter di indicare quali dinieghi può risolvere una ri-autenticazione
- 616a19c: [Security, SecurityBundle] permettere di fissare gli endpoint di discovery dell'oidc token handler al loro issuer
- fec3f91: [Messenger] corretti i fallimenti di decodifica non verificati che mettevano i loro stamp sui messaggi firmati
- e661238: [Messenger] corretti i retry infiniti di un claim che non può essere recuperato
- d1659d2: [Security] avviare una ri-autenticazione per un controllo effettuato da un'espressione allow_if o da una closure #[IsGranted]
- 494d536: [Mime] mantenere la codifica esplicita delle parti in FormDataPart
- feb08ca: [Messenger] instradare al bus del suo messaggio un claim che non può essere recuperato
- 3bf30ac: [Messenger] rifiutare un fallimento di decodifica non verificato che gira su un bus diverso da quello del suo messaggio firmato
- 7cc98e4: [TwigBundle] saltare il controllo delle directory di template note a ogni request
- 7384daa: [Security] rendere FormLoginAuthenticator un entry point di ri-autenticazione
- 7614f74: [Messenger, Scheduler] sostituire RedispatchMessageHandler con un RedispatchStamp non inviabile
- fa61c64: [Messenger] permettere a un flow di portare il proprio contesto negli stamp: propagazione, argomenti degli handler e identità
- f9cce70: [Messenger] mantenere un generatore di message id definito dall'applicazione quando symfony/uid è assente
- 13a9950: [Messenger] unire i middleware identity e propagation in FlowContextMiddleware e tenere traccia dei messaggi ritardati
- 9917e11: [Messenger, Scheduler] aggiungere un'opzione sign ai transport per firmare ogni messaggio
- 95b3e61: [Messenger] far fidare SyncTransport dei messaggi inviati in questo processo
- 515f227: [Messenger] smettere di inoltrare nuovamente un messaggio ridistribuito una volta che è stato inviato
- d547b96: [Messenger] rifiutarsi di chiamare gli handler che richiedono una firma per envelope non attendibili
- 0520527: [FrameworkBundle, RateLimiter] registrare RateLimitAttributeListener in FrameworkBundle
- 37457db: [Tui] aggiungere i modificatori super, hyper e meta agli id dei tasti
- e130143: [Messenger] corretta l'invio di stamp e trust ai worker paralleli
- 1b33dca: [Messenger] corretta la posticipazione degli ack fino a dopo l'idle sleep con --concurrency
- e469e86: [Tui] rifiutare un key id che nomina un tasto sconosciuto durante la creazione di Keybindings
- b024412: [HttpClient] usare HTTP/2 con prior knowledge quando http_version è 2.0
- d56d793: [Messenger] aggiungere ChainStamp per inviare messaggi uno dopo l'altro
- 8318c76: [Messenger] aggiungere DispatchOnFailureStamp per inviare un messaggio quando un altro fallisce
- 77b7797: [KeyManagement] associare una data key memorizzata al suo riferimento e al suo scope
- be05acb: [Tui] aggiunta Tui::getWidgetRect()
- e9a0f11: [Form] aggiunta l'opzione sort_choices a ChoiceType
- 24809fd: [FrameworkBundle, HttpFoundation, Messenger, Security, SecurityBundle] consentire la rotazione dei secret che firmano URI, cookie remember-me, link di login e messaggi
- ed4c60b: [FrameworkBundle] migliorare i suggerimenti mostrati da
debug:autowiring - de96277: [JsonStreamer, Mailer, Notifier, SecurityBundle, Webhook] deprecare gli alias di autowiring che prendono il nome dalle implementazioni
- 5a5cd5b: [DependencyInjection] spostare PriorityTaggedServiceUtil in un file dedicato in modo che possa essere autoloaded
- cb263b0: [Config, DependencyInjection] aggiunta NodeDefinition::inlineEnvVars() per inline-are le env var durante la compilazione del container
- cb53c82: [DependencyInjection] aggiunti i vincoli within e around per ordinare i decorator
- 08829a1: [Config] corretti i nodi enum e le regole di validazione che fanno inline delle env var
- 683b467: [Image] aggiunto il pacchetto UX Image e i suoi bridge Cloudflare e KeyCDN
- 865e532: [Toolkit] includere gli asset di anteprima del kit e aggiungere un'app di anteprima
- 19c7ad8: [Toolkit] aggiunti test visuali per le recipe
- e7e7f1b: [Toolkit, Shadcn] corretto il popover che non metteva a fuoco il proprio contenuto su un browser occupato
- 27da043: [Toolkit] suddividere i test del browser e tenere i log del server fuori dall'output della CI
- 402afd1: [Toolkit, Flowbite] corretto il modal che non aveva un nome accessibile
- dd302b3: [Toolkit, Flowbite] corretti i tab inattivi che erano illeggibili in dark mode
- cdc2878: [Toolkit, Shadcn] corretto il blocco dei tasti freccia prima di una voce di accordion disabilitata
- 01b3ed4: [Toolkit, Shadcn] corretti gli alert dialog che si aprivano al caricamento della pagina
- db56b43: [Toolkit, Shadcn] corretto un drawer chiuso che restava raggiungibile con la tastiera
- 8d2b82f: [Toolkit, Shadcn] corretta la lista della combobox che non si allineava al suo trigger
- 3ebdfa0: [Toolkit, Shadcn] corretto l'indicatore radio del dropdown menu che era un anello invece di un punto
- 183536e: [Toolkit, Shadcn] corretti i sottomenu del dropdown che andavano a capo sulle etichette
- 99e0def: [Toolkit, Shadcn] corretto il date picker che metteva a fuoco "Previous month" invece di un giorno
- 3e74e95: [Toolkit, Shadcn] corretto l'indicatore radio della menubar che era un anello invece di un punto
- b2d63a8: [Toolkit, Shadcn] corretti i sottomenu della menubar che andavano a capo su etichette lunghe
- fb844e7: [Toolkit, Shadcn] corretto l'aria-expanded del trigger del dialog che si desincronizzava
- 4fd09a2: [Toolkit, Shadcn] corretto il tasto Tab che saltava i pannelli del menu di navigazione
- e5896b1: [Toolkit, Shadcn] corretto l'handle resizable a cui mancava lo stato separator
- 9525e93: [Toolkit, Shadcn] corretto uno sheet chiuso che restava raggiungibile con la tastiera
- a2e0e03: [Toolkit, Shadcn] corretto uno slider disabilitato che reagiva ancora alla tastiera
- 893bd57: [Toolkit, Shadcn] corretto lo slider che perdeva il focus dopo un click sulla sua track
- c3f8aa5: [Toolkit, Shadcn] corretti il pulsante di chiusura e l'azione di un toast che ignoravano i click del mouse
- b505c4c: [Toolkit, Shadcn] corretta l'icona del bookmark che non si riempiva negli esempi di toggle
- cf264f6: [Toolkit, Shadcn] corretto il tooltip dell'esempio di pulsante disabilitato che non si apriva mai
- 07052f9: [Toolkit] corretta
ux:installche non sovrascriveva un file più recente della recipe - 9becbdd: [Image] aggiunti i preset
- 4cfdb08: [Icons] preriscaldare le icone locali su
cache:warmup - 7d06bf1: [TwigComponent] copiare il testo semplice in un colpo solo durante il pre-lexing dei template
- cfae61f: [Toolkit, Shadcn] allineare la combobox al componente Shadcn UI upstream
- 0297127: [Toolkit, Shadcn] allineare input-group all'InputGroup di Shadcn upstream
- 41789ce: [Toolkit, Shadcn] corretto il data-slot che veniva ombreggiato quando inoltrato a un componente figlio
- 1ece7c6: [Toolkit, Shadcn] allineare select al Select di Shadcn upstream
- f23c899: [Toolkit] mostrare un diff quando
ux:installchiede di sovrascrivere un file - e396086: [Toolkit, Shadcn] mantenere il tooltip dentro il viewport e adattarlo al suo testo
- ee36b37: [Toolkit, Shadcn] corretto l'handle resizable che si spostava del doppio una volta spostato nel DOM
- 0e54cdf: [Toolkit, Shadcn] corretto sonner che perdeva i suoi toast una volta spostato nel DOM
- 06803d9: [Toolkit, Shadcn] corretto il dialog che non era più modale una volta spostato nel DOM
- c57118a: [Toolkit, Flowbite] corretto il modal che non era più modale una volta spostato nel DOM
- 30ae785: [Toolkit, Shadcn] corretto il navigation-menu che non si apriva più una volta spostato nel DOM
- 8ae6aef: [Toolkit, Shadcn] corretto l'alert-dialog che non era più modale una volta spostato nel DOM
- 9be2122: [Toolkit, Shadcn] corretta la risposta libera del questionario che perdeva il suo nome una volta spostata nel DOM
- 49ab9cc: [LiveComponent] corretto AssertDispatchedEvent::withPayloadSubset() che andava in crash su valori di payload non scalari
- b8d4038: [Pagination] corretta la paginazione Cursor con colonne DATETIMETZ_MUTABLE
- 5ef8a78: [Turbo] supportare il protocollo Mercure 1.0 in turbo_stream_from()
- c19924f: [Turbo] attivare la deprecation di TurboStreamListenRenderer solo quando il servizio viene usato
- dcbeef0: [LiveComponent] aggiunto l'hook
render:startedal tipo ComponentHooks - 40eaad0: [LiveComponent] corretti i componenti figli persi all'interno di un elemento data-skip-morph
- 9613d13: [LiveComponent] concludere lo stato di caricamento quando una request fallisce
- [HttpKernel][Lock] aggiunto l'attributo #[Lock] per rifiutare o ritardare le richieste concorrenti
- [Messenger][MongoDb] ascoltare più code in una singola richiesta
- [Messenger] aggiunto InteropSerializer per scambiare messaggi con un'altra applicazione
- [Validator] validazione a pipeline (Piped Validation)
- [Messenger] aggiunte le opzioni messages e unwrap_exceptions dei bus
Queste sono alcune delle offerte di lavoro Symfony più recenti:
-
Symfony Developer presso Steward
Part-time / Temporaneo - $8,700 – $13,000 / mese
Full remote
Visualizza dettagli -
Symfony Developer presso ATH
Contratto / Freelance - €25 – €50 / ora
Full remote
Visualizza dettagli
SymfonyCasts è il modo ufficiale per imparare Symfony. Scegli un percorso per un cammino guidato attraverso oltre 100 corsi video su Symfony, PHP e JavaScript.
Questa settimana, SymfonyCasts ha pubblicato i seguenti aggiornamenti:
- (Video) Symfony Security: Going Further: creare un Super Admin Voter
- (Video) Symfony Security: Going Further: Sudo Mode: richiedere l'autenticazione completa
- Symfony AI in pratica: costruire un assistente di scrittura per adulti dislessici
- Playwright-PHP cambia le regole del gioco per il testing di Symfony
- Symfony 8.2 — URL firmati monouso, senza storage aggiuntivo
- Da Symfony 7.4 a 8.1, misurato due volte a un mese di distanza: due delle parti spaventose sono state corrette nelle patch release
- HTTP QUERY in Symfony: quando la tua GET non ci sta su una cartolina
- Enum traducibili in Symfony: problemi, soluzioni e quando usarli
- Configurare MCP con Symfony e collegarlo a Gemini Spark
- Come ho costruito un agente AI in PHP
- Domain Driven Design in Symfony
- Non potevo toccare il database, così ho costruito la ricerca accanto
- Come non soffrire più durante la migrazione di un progetto
- I Doctrine Lifecycle Listener sono un posto pericoloso per la cancellazione GDPR
- Presentiamo EasyAdmin Pro
- ObjectMapper in Symfony 8: trasformare DTO senza boilerplate
- Multi-step forms in Symfony 8: form complessi senza dolore
- Как мы перестраивали e‑commerce‑платформу в production: от legacy‑системы к Next.js и Symfony
- Symfony/PHP Meetup Mannheim by SensioLabs: Mannheim, Germania (22 ottobre 2026)
- Meetup #1 - Symfony Québec: Montréal, Canada (28 ottobre 2026)
Altri articoli recenti
Laravel AI 1.1 e 1.2: Agent Skills, Cohere e structured output più solidi
Le release 1.1.0 e 1.2.0 di laravel/ai portano gli Agent Skills, l'approvazione obbligatoria per i tool built-in e nuovi provider come Cohere e Laya self-hosted. Sul fronte qualità arrivano i fix allo structured output per Bedrock e il supporto alle provider options. Aggiornati anche i modelli di default, con Claude 4.7+ che ignora i sampling params.
Laravel 13.35.0: scheduler più controllabile, code più flessibili e response Markdown
Laravel 13.35.0 porta Schedule::alwaysOnOneServer(), il supporto a schedule:interrupt per i comandi di lunga durata, --memory in percentuale per queue:work e il nuovo metodo markdown() sulla response factory. Tante piccole migliorie anche a test, view compilate in parallelo e dischi local.
BashBox: un interprete Bash in sandbox per agenti AI in PHP
BashBox è un interprete bash scritto in puro PHP che permette di eseguire gli script generati dagli agenti AI senza mai ricorrere a proc_open, exec o shell_exec. Ogni comando è una classe PHP che lavora su un filesystem virtuale, con limiti di esecuzione, quote disco e accesso di rete configurabili. Ideale per chi sviluppa agenti con il Laravel AI SDK o altre librerie simili.