begin process at 2012 02 15 23:50:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACINE DU SITE.

RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACINE DU SITE.


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :relatif, chemin, php5-3 Niveau :Initié Date de création :06/11/2009 Date de mise à jour :12/11/2009 10:04:55 Vu :4 193

Auteur : FredPsy

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

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".

Comm ent 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_e xtension" 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_imag e.mon_extension" alt=""/>';

Voilà.

Source

  • <?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é. */
  • }
  • ?>
<?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é. */
   }
?>



 Historique

12 novembre 2009 10:05:11 :
Le terme __file__ a été remplacé par __FILE__

 Sources de la même categorie

Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

 Sources en rapport avec celle ci

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
DÉTERMINATION DU CHEMIN D'INDEXAGE MENANT À UNE VALEUR DANS ... par 8Tnerolf8
Source avec Zip INCLUDE CONTENANT DES IMAGES ET AUTRES FICHIERS par Linkman
TOUTES LES VARIABLES POUR CRÉER DES CHEMIN (S) RELATIF (S) D... par caviar

Commentaires et avis

Commentaire de mlinux le 09/11/2009 09:40:52

Bonjour Fred,

Ton idée est fort intéressante, mais je ne suis pas sûr d'avoir bien tout compris.

Voila ce que j'ai compris.

  
   function setChemin($chemin_fichier_appelant)
      {
      . . .
      }

   $chemin_repertoire = setChemin(__file__);
   echo '<img src="'.$chemin_repertoire.'/dossier_image/mon_imag e.mon_extension" alt=""/>';


Est-ce cela ?

Commentaire de FredPsy le 09/11/2009 17:53:03

Bonjour.
En fait, il faut considérer cette fonction comme faisant partie d'un objet qui comporte une autre fonction avec par exemple un echo '<img src="'.$chemin_repertoire.'/common_image/mon_imag e.mon_extension" alt=""/>';

J'appelle cet objet depuis index.php et ma fonction se trouve dans libs/mes_objets/mon_objet.class.php.
Dans ce même objet, j'ai besoin d'insérer une image qui se trouve dans libs/mes_objets/common_image/.

Mon objet étant appelé depuis la racine, si je n'ai pas le chemin relatif vers mon image (./libs/mes_objets/common_image/), index.php va chercher l'image dans ./common_image/ et forcement, il ne la trouvera pas.

J'espère avoir été assez clair.

Commentaire de glad le 12/11/2009 08:23:44

Salut

Attention, en regardant en diagonale, je vois un petit bug :

  __file__

devrait être :
  __FILE__

As-tu testé ton astuce sous Linux ?

J'aurais remplacé mes anti slash par des slash :

$chemin_fichier_courant = str_replace('\\', '/', __FILE__);

A tester...
A+

Commentaire de FredPsy le 12/11/2009 10:05:44

Bonjour.

Effectivement avec __FILE__ c'est mieux mais ça fonctionne aussi avec __file__.

Je n'ai pas testé sous Linux.

Concernant le remplacement des antislash par des slash, je n'en ai pas le besoin.
Le __file__ appelant et le __file__ courant sont explosés en chaines séparées sans antislash et
c'est la fonction implode qui se charge de rajouter les slash.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Chemin relatif [ par spootnik2 ] Bonjour,je chercher un truc pour trouver le chemin relatif de mon server afin de configurer un script phpmercispootnik2 chemin relatif [ par arnold002 ] Bonjour &#224; tous,Voil&#224; une b&#234;te question.J'ai des probl&#232;mes pour d&#233;finir des chemins relatifsL'architecture est la suivante :in chemin pour fonction xmlhttprequest [ par David_monchy ] salut,Comme je l'ai dit dans l'un de mes posts précédents, je suis en train d'intégrer un site déjà existant au sein meme d'un autre site. Pour cela, pb preg_replace [ par David_monchy ] Salut, je souhaite remplacer le chemin d'une balise image. pour cela, je fais ceci:$message=preg_replace(' @&lt;img src= " messages@ ' , '@&lt;img src relatif a dreamweaver... et les couleurs [ par uneasyw ] Bonjour!Bon, alors voilà j'ai un petit pb avec dreamweaver... quand j'importe un texte par copier coller depuis word je perd toutes les couleurs établ balise href avec lien http et non relatif [ par AlBud ] Salut à tous,je ne suis pas habitué au forum et je ne sais pas si ma question est au bon endroit mais là je suis dans l'impasse totale. Voila sur un s 3 questions en vrac sur le PHP [ par Galmiza ] Salut,J'ai quelques questions d'ordre général en PHP.1. Y a-t-il un moyen de changer brutalement de page (comme si l'utilisateur changeait d'adresse d Ecrire un fichier sur le bureau windows [ par marcootz ] Salut,Dans le cadre d'une appli web partagée, j'ai besoin d'écrire un fichier sur le bureau windows. Seulement le chemin est C:\Documents and Settings probleme d'acces a une adresse locale [ par rpgmaniac76 ] Salut salut ^^ bon, j'explique mon probleme :je veux faire une "application php" qui tournera uniquement un local sur ma machine, et je souhaite acced Upload des plusieurs fichiers dans le meme formulaire? [ par todixy ] Bonjour. J'essaie faire un upload des plusieurs textes et fichiers dans une base de données, mais les fichiers arrivent pas... Est-qu'il y a des err


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales