8
votes

inclure et include_once dans php

Quelqu'un pourrait-il m'expliquer s'il vous plaît lorsque vous devez utiliser le inclure et include_once et comment l'utiliser doit-il l'utiliser.

Je suis nouveau à PHP et j'aimerais comprendre que ce sont des conditions de laymans. Pas trop clair avec ce qui a été mentionné sur la documentation PHP à php.net .

laissez-nous dire que j'ai la structure de dossier suivante

-> racine -> API -> user.php

-> racine -> utilisateurs -> CreateUser.php

Si je dois utiliser le user.php dans catenerUser.php Comment dois-je le faire?

et s'il y a un autre fichier sous

-> racine -> API -> Utilitaire -> ImageProcessor.php

Comment devrais-je être compris imageprocessor.php avec createUser.php


0 commentaires

5 Réponses :


17
votes

Si vous êtes toujours Inclure_once Tout ira bien. Il empêche l'incluant le même fichier deux fois.

Disons que vous avez ces fichiers:

C : inclure b; inclure A;

B : comprend un;

A : echo "bonjour";

Lorsque vous exécutez C , A sera inclus deux fois (la plupart probablement une situation indésirable), donc si vous utilisez toutes comme include_once Il sera appelé qu'une seule fois.

Il est livré avec un petit coût de performance, cependant, si vous n'êtes pas Facebook ou que ce n'est pas un coût important.


3 commentaires

Cela semble répondre parfaitement aux questions, mais je voulais noter que @allisonc signifie qu'il s'agit probablement d'un lieu d'exigence / _Alce plutôt que d'inclure / _once. Bien sûr, l'exigence a une surcharge supplémentaire à inclure, mais elle ne sera probablement pas significative pour vous.


Je pensais que cela nécessite était un alias d'inclure.


Exécutez effectivement une erreur fatale si le fichier n'est pas trouvé alors que l'inclure enverra un avertissement.



4
votes

in CreateUser.php : xxx

S'il est nécessaire de vous assurer que ces fichiers sont inclus, vous devez utiliser requir_once .



4
votes

Utilisez Inclure_once Lorsqu'il y a une exigence implicitement imbriquée (un meilleur terme?) impliqué. Je veux dire quelque chose comme ça:

suppose

  • A est un modèle de département
  • B est un modèle d'employé
  • c est un module de base de données

    Parce que le modèle a besoin de connexion de base de données, A et B les deux comprend C. Un département est constitué d'employés qui y travaillent, donc un inclut B. avec Incluse_once , le module de base de données ne serait inclus qu'une seule fois, donc il n'y aura pas d'erreur de déclaration en double.

    inclure est pour quelque chose de plus général comme un modèle de sortie (peut-être échographier nom d'utilisateur actif) qui est intentionnellement conçu pour apparaître plusieurs fois.


0 commentaires

5
votes

Je vais utiliser des exemples simples, un pour la situation lorsque inclure () est meilleur, un lorsque include_once () est meilleur.

Disons que vous avez des fichiers a.php et b.php . Chacun d'entre eux "inclut" bibliothèque.php qui contient la fonction foo () . Maintenant, si vous essayez de inclure a.php et b.php dans un autre fichier, index.php , Par exemple, vous pouvez obtenir une erreur disant que foo () était déjà déclaré. Ce qui signifie include_once () est mieux adapté dans cette situation. Vous éviterez de définir la même fonction deux fois.

second cas. Supposons que vous souhaitiez inclure fichier.php chaque fois que votre boucle fonctionne. Contenu de fichier.php pourrait être une simple sortie HTML simple.

fichier.php : xxx < p> index.php : xxx

Dans ce cas, inclure () est meilleur car il inclura le fichier Chaque fois que la boucle fonctionne. include_once () ne fonctionnerait que la première fois.


0 commentaires

2
votes

L'instruction include_once () inclut et évalue le fichier spécifié lors de l'exécution du script. Il s'agit d'un comportement similaire à celui de l'instruction () , avec la seule différence étant que si le code d'un fichier a déjà été inclus, il ne sera plus inclus. Comme son nom l'indique, il sera inclus une seule fois. Disons par exemple, j'ai trois fichiers,

fichiers:

  1. fonctions.php
  2. globals.php
  3. header.php

    Voici comment chaque fichier ressemble à:

    fonctions.php : xxx

    Globals.php : xxx

    header.php : xxx

    Maintenant, si vous essayez d'ouvrir header.php Vous obtiendrez une erreur car globals.php inclut fonction.php déjà. Vous obtiendrez une erreur disant que la fonction foo () était déjà déclarée dans globals.php , et j'ai également inclus dans header.php - lequel signifie que j'ai inclus fonctions.php deux fois. Donc, pour être sûr d'inclure seulement fonctions.php une seule fois, je devrais utiliser la Inclure_once () fonction , donc mon . .Php devrait ressembler à ceci: header.php : xxx

    maintenant lorsque j'ouvre header.php , je n'aurai plus d'erreur parce que php savoir à inclure le fichier fonctions.php une seule fois Donc, pour éviter d'obtenir une erreur, il serait simplement sûr d'utiliser include_once () au lieu de inclure () fonction dans votre code PHP.


0 commentaires