-
Notifications
You must be signed in to change notification settings - Fork 0
La classe Url est un composant essentiel pour la gestion du routage et du SEO. Elle permet de récupérer l'URL courante de manière sécurisée (détection HTTPS/Proxy) et de générer des Slugs (URLs simplifiées) à partir de chaînes de caractères complexes ou accentuées.
Namespace : Magepattern\Component\HTTP\Url
Liste des méthodes principales
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| current() | bool $withQuery | string | Récupère l'URL absolue (compatible HTTPS & Proxies). |
| clean() | $str, $options | string | Transforme une chaîne brute en URL propre (Slug). |
| shortClean() | string $str | string | Version légère pour les tags ou identifiants simples. |
| stripHostURL() | string $url | string | Extrait uniquement le chemin (path) d'une URL complète. |
| resolve() | ?string $path | string | Convertit un chemin relatif en URL absolue. |
Usage : Génération de Slugs (SEO) La méthode clean() transforme n'importe quelle chaîne en une URL lisible par les moteurs de recherche.
use Magepattern\Component\HTTP\Url;
$input = "C'est l'été & le soleil brille.01 !";
// Configuration personnalisée
$options = [
'dot' => 'display', // Conserve le point (ex: pour les versions 1.0)
'ampersand' => 'strict' // Transforme & en & (Standard W3C)
];
echo Url::clean($input, $options);
// Résultat (code source) : cest-lete-&-le-soleil-brille.01dot : 'none' (par défaut, supprime le point) ou 'display'.
ampersand :
'none' : Remplace & par un tiret -.
'strict' : Remplace & par l'entité HTML &.
Chaîne libre : Remplace par la valeur fournie (ex: 'et').
cspec / rspec : Permet d'ajouter vos propres expressions régulières de nettoyage et leurs remplacements.
Contrairement à une détection classique, la méthode current() vérifie les en-têtes de transfert (X-Forwarded-Proto). C'est indispensable si votre site est derrière un Load Balancer, Nginx Reverse Proxy ou Cloudflare.
// URL actuelle complète avec paramètres GET
$fullUrl = Url::current(true);
// URL sans la Query String (?id=...)
$baseUrl = Url::current(false);