The Symfony PHP framework
langages détectés par GitHub · % code
chaque PR mergée, classée par type, plus récentes en premier
Dans `DebugCommand` du Scheduler, lit le checkpoint persisté via `scheduler_checkpoint_<name>` avec `$save=false` comme date de base quand `--date` est absent et que la planification est stateful.
Sanitise les arguments de stack trace dans `FlattenExceptionNormalizer::normalize()` en remplaçant récursivement toute string non-UTF-8 par `'(binary string)'`, évitant `NotEncodableValueException` lors du JSON-encode de l'`ErrorDetailsStamp` Messenger.
Dans `Inline::parseSequence`/`parseMapping`, saute l'extraction de l'ancre `&xxx` quand le scalaire provient d'un tag (`!!str`) ou d'une ancre nue, alignant le parser flow sur le parser block pour `[&x]` et `[!!str &x]`.
Enveloppe l'appel `serialize($token)` dans `KernelBrowser::loginUser()` (KernelBrowser.php:142) par un try/catch qui relance une `\LogicException` nommant la classe User et pointant vers `__serialize()`/`__unserialize()`, exception originale en `previous`.
Retire `nonce` des attributs inlinés dans l'IIFE du polyfill es-module-shims rendu par `ImportMapRenderer` et le propage à l'exécution via `document.currentScript?.nonce`, stabilisant la signature `<head>` de Turbo.
Encode chaque segment du chemin tmp via rawurlencode dans XliffUtils::shouldEnableEntityLoader avant de le passer à DOMDocument::schemaValidateSource, supprimant le warning libxml flood dans dev.log sous Windows.
Corrige `Window::add()` qui remettait `hitCount` à zéro au reset : la dette des `reserve()` est désormais reportée via `getCarriedHitCount()` et `getExpirationTime()` croît avec la dette pour empêcher la perte d'état des limiteurs inactifs.
Précise dans le PHPDoc de `AbstractLoginFormAuthenticator::getLoginUrl()` que la valeur est comparée littéralement à `$request->getBaseUrl().$request->getPathInfo()` dans `supports()`, donc une URL absolue issue de `HttpUtils::generateUri()` échoue silencieusement.
Caste en `int` la valeur de `ini_get('default_socket_timeout')` stockée comme fallback dans `Connection`, car ext-ldap PHP 8.4 refuse une string pour `LDAP_OPT_NETWORK_TIMEOUT`.
Déplace la libération du verrou de déduplication hors du bloc finally dans DeduplicateMiddleware : verrou conservé si le handler lance, libéré seulement après succès, évitant doublon pendant la file de retry.
Lit défensivement `ErrorCode ?? 0` et `Message ?? message ?? ''` dans `PostmarkApiTransport::doSendApi()` pour gérer le payload 413 minuscule sans `Undefined array key`.
Déplace dans `PropertyNormalizer::setAttributeValue()` la conversion `\TypeError` → `NotNormalizableValueException` et remplace le string-match sur le message « must not be accessed before initialization » par un `ReflectionProperty::isInitialized()` côté lecture.
Retire le `rtrim('=')` sur l'en-tête `Authorization: Basic` du transport Ntfy pour conserver le padding base64 exigé par RFC 4648, réparant l'auth quand `user:password` n'est pas multiple de 3 octets.
Ajoute un garde `isHandlingPlaceholder()` dans `NumericNode::finalizeValue()` pour court-circuiter la vérification min/max quand un placeholder env typé est en cours de résolution, évitant le rejet du fixture sentinelle 0.
Dans Email::prepareParts(), n'écrase plus le nom du DataPart inline par le Content-ID auto-généré ; fallback vers Content-ID uniquement si le name est vide, évitant rejets SMTP 5.7.1.
Force `FrameworkBundle::boot()` à résoudre le service `mime_types` pour déclencher `MimeTypes::setDefault()`, et rend ce service public via `AddMimeTypeGuesserPass` uniquement si un guesser taggé `mime.mime_type_guesser` existe.
Ajoute un flag booléen `$processing` dans `AbstractTokenProcessor::doInvoke()` avec `try/finally` pour court-circuiter et retourner le record inchangé si Monolog rappelle le processor pendant que `getToken()` déclenche déjà l'initialiseur du firewall.
Corrige `TokenBucket::getExpirationTime()` qui renvoyait `calculateTimeForTokens(burstSize)` : le TTL devient `max(burstSize, burstSize - tokens)` pour que la dette d'une réservation négative survive à l'éviction du cache.
Retire CURL_LOCK_DATA_CONNECT du curl_share dans CurlHttpClient car le multi handle partage déjà le cache de connexions, restaurant l'effet de CURLMOPT_MAX_HOST_CONNECTIONS sur max_host_connections.
Ajoute un garde `interface_exists(FormTypeGuesserInterface::class)` avant la déclaration de `DoctrineOrmTypeGuesser` qui lève `LogicException` au lieu du fatal PHP déclenché depuis 7.4.7 par `DebugClassLoader`.
Élargit la clause `conflict` du composer.json de DoctrineBridge en `<5.4|>=8` pour refuser symfony/property-info 8.x, dont l'interface `getType()` casse `DoctrineExtractor::getTypes()`.
Remplace dans `TranslationExtractCommand::removeNoFillTranslations()` la boucle codée en dur sur le domaine `messages` par une itération sur `$operation->getDomains()`, évitant que le sentinel `\0NoFill\0` ne fuite vers `validators` ou `validators+intl-icu`.
Dans `SendFailedMessageToFailureTransportListener`, compare désormais `SentToFailureTransportStamp::getOriginalReceiverName()` au receveur courant au lieu d'exiger `failureTransportsByName` vide, rétablissant l'opt-out manuel pour erreurs transitoires.
Détecte `--max` explicite via `InputInterface::hasParameterOption(['--max'], true)` dans `FailedMessagesShowCommand` ; sinon passe `null` à `ListableReceiverInterface::all()` pour que `--stats` compte tous les messages au lieu de plafonner à 50.
Sépare les checks dans `JsonLoginAuthenticator::getCredentials()` : username/password vide lève désormais `BadCredentialsException` (passe par `onAuthenticationFailure`) au lieu de `BadRequestHttpException` 400, alignant le comportement sur `UserBadge`.
Dans `UrlMatcher::matchRequest()`, remplace temporairement `$this->context` par un `RequestContext::fromRequest()` dérivé de la Request passée, restauré via `finally`, pour que `matchCollection()` lise la bonne méthode HTTP.
Émet un log `Keeping array build parameter` dans `RemoveBuildParametersPass` quand `preserveArrays=true` conserve un paramètre `.foo` de type tableau, jusque-là supprimé silencieusement du conteneur dumpé.