Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2008, 12h04   #1
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 319
Points : 3 319
Par défaut Fichiers inclus : Utilisation de ressources externes

Bonjour à tous,

J'ai un petit souçis qui me gène dans la portabilité de mon code. J'ai certaine de mes classes qui génère du code html dans lequel je peut avoir besoin de placer une image.

Si je place un dossier images à la racine de mes classes , pas de soucis j'affiche les images.
Mais si par exemple ma classe est inclues dans une page qui se trouve dans une arborescence différente, la référence

Code :
<img src="images/images.gif">
Se fera à partir du fichier qui inclues la classe et donc l'image ne s'affichera pas.

Je n'arrive pas à trouve rde solution. Quand on utilise par exemple :
Code :
$_SERVER['SCRIPT_NAME']
dans la classe , c'est le nom du fichier qui inclus la classe qui est gardé et donc pas moyen de retrouver le chemin vers mon dossier images d'origine.

Y'a t'il une solution autre que de passer le chemin du dossier / fichier à utiliser pour que je puisse inclure mes classes sans me soucier des ressources externe qu'elles peuvent utiliser ?

Merci
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 18h22   #2
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Salut,

Personnellement je définis une constante ROOT dans mon script de base (index.php par exemple), et je définis tous mes chemins par rapport à cette racine.

dans index.php
Code php :
1
2
3
4
5
 
define ('ROOT', './');
require_once (ROOT.'inc/common.php');
require_once (ROOT.'headers.php');
///etc...

dans common.php
Code php :
1
2
3
4
5
6
7
8
 
if (!defined('ROOT'))
    exit('Pas de racine !');
 
require_once (ROOT.'inc/cls/MyException.php');
require_once (ROOT.'inc/cls/MyDB.php');
require_once (ROOT.'styles/style01.php'); //au même niveau que inc/ mais pas gênant
//etc... aussi

Le deuxième avantage est qu'on ne peut accéder à common.php directement par le navigateur, même si on connait son existence : la constante n'étant pas définie, le script s'arrête.

De même, tu peux définir une autre page :
./autre_page/index.php :

Code php :
1
2
3
4
5
 
define ('ROOT', '../'); //notez bien les deux points !
require_once (ROOT.'inc/common.php');
require_once (ROOT.'headers.php');
///etc...

Un tout petit point qui aurait pu changer tant de choses sinon...
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 18h34   #3
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
Moi sur chaque projet, je fais pratiquement pareil sauf que j'ai une double constante.

ROOT_PATH (include php, require php et fichier du serveur)
ROOT_URL (pour les images, les css et tout ce que dois reconstituer le client)
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h59.


 
 
 
 
Partenaires

Hébergement Web