Start · Sprachen · PHP · Referenz · Uri\WhatWg\UrlValidationError

Uri\WhatWg\UrlValidationError

Klasse

Repräsentiert einen einzelnen URL-Validierungsfehler gemäß dem WHATWG-URL-Standard, der bei der Verarbeitung einer URL aufgetreten ist.

seit PHP 8.4.0 Kategorie: error

Signatur

class Uri\WhatWg\UrlValidationError

Beschreibung

Uri\WhatWg\UrlValidationError ist eine Klasse aus der URI-Erweiterung von PHP 8.4, die einen einzelnen Validierungsfehler beim Parsen oder Verarbeiten einer URL nach dem WHATWG-URL-Standard beschreibt. Objekte dieser Klasse werden nicht direkt instanziiert, sondern von den Parsing-Methoden der WHATWG-URL-Implementierung zurückgegeben, wenn eine URL zwar syntaktisch verarbeitbar, aber nach dem Standard nicht vollständig konform ist.

Wichtig: Ein UrlValidationError stellt keinen fatalen Fehler dar. Der WHATWG-URL-Standard unterscheidet zwischen Validierungsfehlern (Warnungen, die dennoch zu einer gültigen URL führen) und Failure (das Parsen scheitert vollständig). Ein UrlValidationError entspricht dabei ersterer Kategorie – die URL wird trotzdem erzeugt, aber der Fehler zeigt an, dass die Eingabe nicht sauber konform war.

Jedes Objekt enthält Informationen über den Typ des Fehlers (als UrlValidationErrorType-Enum), den Kontext (die betroffene Zeichenposition) und ob es sich um einen fatalen Fehler handelt, der das Parsen verhindert hat. Entwickler können diese Fehler nutzen, um Eingaben zu bereinigen, Benutzer auf fehlerhafte URLs hinzuweisen oder strikte Validierungslogik zu implementieren.

Die Fehlersammlung wird typischerweise als zweites Argument (errors) an Parsing-Funktionen wie Uri\WhatWg\Url::parse() übergeben und dort befüllt.

Beispiele

Validierungsfehler beim Parsen einer URL sammeln

<?php
use Uri\WhatWg\Url;
use Uri\WhatWg\UrlValidationError;

$errors = [];
$url = Url::parse('https://example..com/path', null, $errors);

if (!empty($errors)) {
    foreach ($errors as $error) {
        /** @var UrlValidationError $error */
        echo 'Fehlertyp: ' . $error->type->name . PHP_EOL;
        echo 'Fatal: ' . ($error->failure ? 'ja' : 'nein') . PHP_EOL;
    }
} else {
    echo 'Keine Validierungsfehler.' . PHP_EOL;
}

if ($url !== null) {
    echo 'Geparste URL: ' . $url->href . PHP_EOL;
}
Fehlertyp: HostMissing Fatal: nein Geparste URL: https://example..com/path

Prüfen ob ein fataler Fehler vorliegt

<?php
use Uri\WhatWg\Url;
use Uri\WhatWg\UrlValidationError;

$errors = [];
$url = Url::parse('https://:nicht-valide@[]/pfad?q=1', null, $errors);

foreach ($errors as $error) {
    /** @var UrlValidationError $error */
    if ($error->failure) {
        echo 'Fataler Fehler: ' . $error->type->name . ' – Parsen abgebrochen.' . PHP_EOL;
    } else {
        echo 'Warnung: ' . $error->type->name . PHP_EOL;
    }
}

if ($url === null) {
    echo 'URL konnte nicht geparst werden.' . PHP_EOL;
}
Fataler Fehler: IPv6Unclosed – Parsen abgebrochen. URL konnte nicht geparst werden.

// Wichtig · Fallstricke

Kein geworfenes Objekt: UrlValidationError erweitert nicht \Exception oder \Error und wird nicht geworfen. Es handelt sich um ein reines Datenobjekt (Value Object), das in einem Array gesammelt wird.

Eigenschaften: Die Klasse besitzt typischerweise die schreibgeschützten Eigenschaften type (vom Typ Uri\WhatWg\UrlValidationErrorType), failure (bool, ob der Fehler das Parsen verhindert hat) und kontextbezogene Informationen wie die betroffene Eingabezeichenkette.

Verfügbarkeit: Diese Klasse ist Teil der experimentellen Uri-Erweiterung, die in PHP 8.4 eingeführt wurde. Die Extension muss kompiliert bzw. aktiviert sein.