-
Notifications
You must be signed in to change notification settings - Fork 0
PathTool
La classe PathTool gère la résolution des chemins physiques sur le serveur. Sa méthode basePath() est conçue pour localiser la racine du projet hôte en "remontant" automatiquement à travers l'arborescence interne de la librairie.
Elle est capable de distinguer le dossier de la librairie du dossier du site, même si les noms sont similaires, grâce à une remontée itérative basée sur une liste d'exclusion.
Namespace : Magepattern\Component\Tool\PathTool
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| basePath() | array $extend | string|false | Calcule le chemin racine du projet en nettoyant les segments de dossiers. |
| isAbsolutePath() | string $file | bool | Détermine si un chemin est absolu (compatible Unix, Windows et URL). |
Logique de résolution (Auto-nettoyage) La méthode utilise un système de "Back-Tracing" (remontée par la fin). Elle analyse chaque segment du chemin en partant du fichier actuel et les supprime tant qu'ils appartiennent à la structure interne de Magepattern.
Dossiers ignorés par défaut La classe ignore automatiquement les segments suivants pour trouver la sortie : component, tool, filter, lib, vendor, src, magepattern.
Si votre structure est : /Sites/mon-site-web/lib/magepattern/component/tool/ Le script analyse tool -> Supprimé (connu). Le script analyse component -> Supprimé (connu). Le script analyse magepattern -> Supprimé (connu). Le script analyse lib -> Supprimé (connu). Le script analyse mon-site-web -> Inconnu -> STOP.
Résultat retourné : /Sites/mon-site-web/
- Récupérer la racine du projet La méthode basePath() remonte l'arborescence pour trouver la racine de Magepattern. Elle retourne un chemin se terminant toujours par un séparateur (/ ou ).
use Magepattern\Component\Tool\PathTool;
$root = PathTool::basePath();
// Résultat typique : /var/www/html/mon-projet/- Étendre la recherche de nettoyage Si vous déplacez cette classe ou si vous l'utilisez dans un sous-dossier spécifique (ex: Core/Plugin), vous pouvez lui demander de supprimer des segments supplémentaires :
$root = PathTool::basePath(['Core', 'Plugin']);- Validation de chemin Pratique avant de tenter une inclusion de fichier pour savoir si le chemin fourni est relatif ou déjà complet.
$file = "/var/www/config.php";
if (PathTool::isAbsolutePath($file)) {
// Le chemin est déjà complet, on peut l'utiliser tel quel.
} else {
// Le chemin est relatif, on doit le préfixer avec le basePath.
$fullPath = PathTool::basePath() . $file;
}Si vous utilisez un nom de dossier de projet spécifique (comme magepattern3), assurez-vous qu'il ne figure pas dans la liste $default de la classe, ou passez les dossiers à conserver en dehors de la recherche.
use Magepattern\Component\Tool\PathTool;
// Retournera la racine du site contenant le dossier de la librairie
$root = PathTool::basePath();DIRECTORY_SEPARATOR : La classe utilise la constante native de PHP pour s'adapter automatiquement au système d'exploitation (slash / sous Linux/macOS, backslash \ sous Windows).
Multi-Format : isAbsolutePath supporte les lettres de lecteurs Windows (C:), les partages réseau (\Server) et les protocoles PHP (phar://, http://).
Gestion d'erreurs : En cas de calcul impossible (chemin vide ou racine système atteinte par erreur), la méthode logue une exception via le Logger et retourne false, évitant ainsi des inclusions de fichiers imprévisibles.
require_once PathTool::basePath() . 'config' . DIRECTORY_SEPARATOR . 'settings.php';