IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment gérer les includes


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut Comment gérer les includes
    Bonjour,

    J’ai fais un site, mais j’ai un gros problème au niveau de mes includes.
    La majorité de mes pages sont à la racine, et ca commence a devenir compliqué d’autant que certaines pages ont rien faire à la racine comme une page cron ou des pages pour des api.

    Le problème c’est que si je place tout un des dossiers bien ranger tout les includes sont perdus.
    Car les includes prennent en parametre des chemins relatifs, mais en se basant sur la page parent et non celle en cours.

    Je m’explique :

    / Index.php > avec dedans:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     require_once('includes/Logger.php');
    require_once('includes/appli.php');

    /includes/appli.php > avec dedans:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    require_once('includes/mybase.php');
    require_once('includes/security.php');

    Si jamais je créer une page /cron/moncron.php qui appel /includes/appli.php, j’ai une erreur :
    Fichier 'includes/mybase.php' non trouvé
    car mybase.php est vu de cron.php sur ../includes/mybase.php.

    Je souhaite trouver une solution permettant de faire marché Index.php et cron.php en même temps.
    On pourrait mettre tout les includes possible dans Index.php et cron.php, mais je ne trouve pas sa propre, car on ne sait pas les includes vraiment nécéssaire par les autres pages, donc on en inclus de trop (voir pas assez).

    Comment puis je gérer cela sans tout mettre à la racine ?

    Merci d’avance

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    en ajoutant ./ qui est la racine du site

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('./includes/mybase.php');

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Points : 26
    Points
    26
    Par défaut
    Tu peut définir un chemin qui pointe vers la racine de ton application/site web, dans index.php par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('ROOT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
    et ajuster les require_once en conséquence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once(ROOT_PATH . 'includes/appli.php');
    Le fichier /cron/moncron.php devra d'abord inclure le fichier dans lequel est défini ROOT_PATH

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut
    Bonjour,


    Ce n'est qu'après 0.5j de taff à changer tout mes includes et mon arborescence que je me suis aperçu que la solution de Helfima, n'était que fantaisie.

    Merci donc à bash88 qui me réconforte dans ma peine par sa solution qui je pense est viable.

    J'ai fais une solution intermédiaire. Mettre partout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT']);
    	require_once( ROOT_PATH.'includes/appli.php');

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2009, 13h29
  2. Réponses: 2
    Dernier message: 08/07/2005, 11h40
  3. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 11h40
  4. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 12h02
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo