Récupérer le chemin relatif d'un objet par rapport à la racine du site.

Contenu du snippet

Cette fonction a été réalisée dans le but de récupérer le repertoire où elle se trouve par rapport à la racine du site.

Cette fonction faisant parti d'un objet complet appelé depuis la page index.php du site, il devenait difficile de faire des include dans cet objet.

cas_concret :
un site avec un objet appelé depuis index.php à la racine du site, contenant la fonction setChemin() et caché au fin fond d'une arborescence comme par exemple :
"libs/mes_objets/mon_objet.class.php".

Comment faire afficher par cet objet une image qui se trouve par exemple dans :
"libs/mes_objets/dossier_image/" ?

Sans cette fonction, il suffirait d'écrire dans le code de l'objet :
echo '<img src="libs/mes_objets/dossier_image/mon_image.mon_extension" alt=""/>';

Maintenant, si un utilisateur décide de déplacer cet objet !
Le chemin inscrit précédemment ne sera plus bon.

Alors qu'avec cette fonction, le chemin s'écrira :
echo '<img src="'.$chemin_repertoire.'/dossier_image/mon_image.mon_extension" alt=""/>';

Voilà.

Source / Exemple :


<?php
/** Appel de la fonction 
@parmetre_requis : le chemin du fichier depuis lequel la fonction est appelée donc la constante magique __file__

  • /
setChemin(__FILE__); function setChemin($chemin_fichier_appelant) { /** @creator : Fred @php_version : 5.3.x
  • /
/** Récupération du chemin du fichier courant. */ $chemin_fichier_courant = __FILE__; /** Explosion des chaines du chemin du fichier d'appel*/ $explode_chemin_courant = explode("\\", $chemin_fichier_courant); /** Explosion des chaines du chemin. */ $explode_chemin_appelant = explode("\\", $chemin_fichier_appelant); /** Récupération des valeurs du chemin du fichier appelant */ $valeur_chemin_fichier_appelant = array_values($explode_chemin_appelant); /** Récupération des valeurs du chemin du fichier courant. */ $valeur_chemin_fichier_courant = array_values($explode_chemin_courant); /** Comparaison des deux chaines*/ $comparaison_chemin = array_diff($valeur_chemin_fichier_courant, $valeur_chemin_fichier_appelant); /** Chemin d'accès. */ $chemin_acces = implode("/", $comparaison_chemin); /** Calcul du nombre de chaine dans le chemin du fichier courant. */ $nb_chaine_chemin_courant = count($valeur_chemin_fichier_courant); /** Retrait du nom du fichier courant afin d'obtenir le chemin d'accès depuis la racine du site. */ $chemin_repertoire = str_replace($valeur_chemin_fichier_courant[$nb_chaine_chemin_courant-1], "", $chemin_acces); /** Ajout des symboles ./ (point et slash). */ $chemin_repertoire = "./".$chemin_repertoire; /** Retour de la fonction. */ return $chemin_repertoire; /** Et voilà, la récupération du répertoire dans lequel se trouve le fichier courant est remonté. */ } ?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.