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 :

include ou require ou *_once ?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut include ou require ou *_once ?
    Bonjour,

    Yogui a dit :
    PHP dispose de 2 instructions pour inclure un script :

    * include() : Inclure le code du script indiqué, lancer un avertissement si le fichier est introuvable ;
    * require() : Inclure le code du script indiqué, lancer une erreur fatale si le fichier est introuvable ;

    Chacune de ces instructions se décline en une instruction *_once() qui oblige PHP à vérifier si le script demandé a déjà été inclus au cours de la requête actuelle (très pratique pour les déclarations de fonctions et de classes). Les fonctions *_once() ne sont pas nécessairement plus lentes à l'exécution que leurs grandes soeurs, mais elles consomment légèrement plus de mémoire. La différence étant dérisoire, il est inutile de s'en soucier.
    Je ne comprends pas pourquoi c'est "très pratique pour les déclarations de fonctions et de classes".
    C'est pour les "paresseux" qui ne veulent pas se casser
    la tête à savoir si c'est déjà déclaré?
    Ou pour les gens pressés !

    Ce que je crois comprendre, c'est que l'on met _once
    quand on est pas certain que le fichier est inclus.

    En résumé, peut-on dire :

    " il est recommandé d'utiliser include_once
    plutôt que include."

    D'autre part je voudrais savoir plus précisément
    quand on utilise require ou include.

    Je crois comprendre que

    require - par la fatal error -
    produit un arrêt; j'en conclus que c'est préférable
    en cours de développement.

    include - par l'avertissement -
    ne produit pas d'arrêt; j'en conclus (a priori)
    que c'est préférable pour l'utilisateur car
    le script continu à fonctionner malgré tout.

    Je m'aventure un peu mais c'est pour que vous puissiez
    mieux m'éclairer.

    Merci.

  2. #2
    Membre éclairé
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Points : 654
    Points
    654
    Par défaut
    include - par l'avertissement -
    ne produit pas d'arrêt; j'en conclus (a priori)
    que c'est préférable pour l'utilisateur car
    le script continu à fonctionner malgré tout.
    je n'en suis pas si sûr. cela dépend si ton script peut se passer de cet include. dans le cas contraire, cela peut entrainer de graves erreurs ou compromettre l'intégrité des données.

    utilises require_once tout le temps.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Points : 20 246
    Points
    20 246
    Par défaut
    C'est pour les "paresseux" qui ne veulent pas se casser
    la tête à savoir si c'est déjà déclaré?
    C'est surtout pour ne pas inclure deux fois la même chose. Dans de gros projet on à pas forcément en tête qui inclus quoi pour chaque fichier.
    C'est donc une sécurité.

    Pour require/include bricecol l'a dis :

    Si fichier indispensable require. Sinon (genre un bout d'html) tu peux mettre un include. Perso je met des require_once partout ca règle le problème.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Yogui a dit :

    Il faut utiliser les instructions include et include_once lorsque le script à inclure n'est pas primordial pour le bon fonctionnement du reste du programme, et les instructions require et require_once dans le cas contraire.
    Vous, vous dites :
    Généralement, il vaut mieux mettre "require_once".

    Tout le monde est d'accord ?

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 375
    Points
    16 375
    Par défaut
    Include s'utilise pour le cas où l'absence du fichier à inclure n'est pas dramatique, require pour les cas où le script ne peux absolument pas fonctionner sans ou où l'absence de ce fichier entraine un défaut de sécurité.
    En pratique, ça change surtout l'endroit où l'erreur apparaitra si tu tentes d'utiliser quelque chose qui aurait du être défini par le fichier inclus.

    *_once empêche que les script tente d'inclure plusieurs fois le fichier, donc évite par exemple dans le cas d'un fichier de définition de classe qu'on tente de définir plusieurs fois la classe (et donc que ça explose)

    Personnellement j'utilise le plus souvent include_once.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Oui, c'est assez subtil.

    Notez que mon petit bout de code ne s'arrête pas après
    l'avertissement d'un include.

    Ce qui me chagrine c'est ceci :
    Ne peut-on pas imaginer que l'on ne s'aperçoive pas
    de cet avertissement si le code continue et "passe"
    à une autre page... ou, plus simplement peut-être
    s'il y a un défilement de page ... ou encore plus bête,
    qu'on ne l'a pas vu ! Si au moins c'était en rouge avec un bip-bip !

    Pour *_once, on est apparemment tous d'accord :
    il vaut mieux l'utiliser souvent.

    Le require_once me semble plus sécurisant
    pour vérifier mon code ou pour raison de sécurité.

    Enfin, j'en parle bien mais c'est simplement
    ma réflexion de débutant.

Discussions similaires

  1. include et require
    Par amazircool dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2008, 07h05
  2. [Configuration] Question sur Include (ou Require)
    Par charlands dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/10/2007, 15h10
  3. [Système] include ou require ?
    Par amazircool dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2007, 16h22
  4. Fonctions include et require avec php 5.2.1
    Par Nuts07 dans le forum Langage
    Réponses: 10
    Dernier message: 11/03/2007, 00h30
  5. Fonction include (ou require ?)
    Par Link14 dans le forum Langage
    Réponses: 6
    Dernier message: 04/06/2006, 16h40

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