Comportement PHP d'include / require à l'intérieur du conditionnel
Si je place un include
ou require
énoncé à l'intérieur d'un test qui évalue à false
l'interprète PHP ignorer le fichier include tout à fait, ou qu'il charge juste au cas où?
Un exemple serait:
if ($some_user_var) {
require 'this.php';
} else {
//do stuff
}
J'ai lu quelque part que require
sera toujours inclus par l'interprète, quel que soit le conditionnel, mais include
ne sera pas. Si c'est le cas, il suffit de commutation de require
à include
pourrait dire que l'accélération due à la réduction de I/O et l'analyse des frais généraux.
Il a probablement fait une différence si je suis à court d'un préprocesseur comme eAccelerator, mais supposons que je n'ai pas.
source d'informationauteur Jens Roland
Vous devez vous connecter pour publier un commentaire.
Il ne seront retenues que si la condition est vraie. Je ne sais pas où vous avez lu autrement, mais ils ont tort.
La seule différence entre
include
etrequire
est queinclude
va lancer un avertissement si elle échoue, alors querequire
lèvera une erreur fatale.Pour confirmer cela, voir le PHP de la page de manuel de
require
.(ps - si vous êtes en train de faire conditionnelle comprend, selon ce que le reaon est, vous pouvez envisager d'utiliser
include_once()
ourequire_once()
à la place)Ce n'est pas correct.
require
ne sera pas inclure des fichiers qui sont enveloppés dans des blocs où ils ne sont jamais appelés, l'interprète php de ne pas les ignorer.include
etrequire
ont peu ou pas de différence en terme de performance (d'ailleurs ils n'ont point beaucoup de différence à partir de _once, même si elle est plus importante).J'ai lu ça quelque part aussi. L'argument va quelque chose comme ceci:
Si vous mettez une condition dans un include, PHP n'a aucun moyen de savoir s'il est nécessaire ou non jusqu'à ce qu'il commence à interpréter le code et il ne peut pas interpréter le code jusqu'à ce qu'il s'empare de toutes les variables et de fonctions, et donc des fichiers. Donc, il CHARGE tous les fichiers quelle que soit la condition, puis les gouttes de retour de la finale de la "compilation".
Bien que là encore, si vous avez une condition dans un fichier PHP avec une erreur, il n'a pas le casser. Et si vous déclarez une variable dans un fichier inclus, puis utiliser la valeur de la variable pour déterminer si ou de ne pas l'inclure, il ne ramasse pas de sa valeur:)
Peut-être cette habitude d'être un problème dans les anciennes versions de PHP?
Je ne l'ai pas testé en ce qui concerne la vitesse de charge et de l'utilisation de la RAM mais j'aimerais obtenir une réponse définitive à cette question. Est-il que les coûts conditionnelle comprend?