La situation:PHP/Zend se plaint de variables non définies
index.php:
<?php
include("foo.php");
include("baz.php");
foo("bar.php");
?>
baz.php:
<?php
$x = 42;
?>
fichier foo.php:
<?php
function foo($p) {
include_once($p); // please dont mind the inclusion hole
}
?>
bar.php:
<?php
echo $x;
?>
Zend avis: Undefined variable: x
x Placer global $; dans bar.php supprime l'avis, mais je comprends pourquoi il ya un avis à ce sujet en premier lieu .. N'inclut pas assez de travail comme l'inclusion des en-têtes C? Cela signifierait que le code interprété ressemblerait à ceci:
<?php
function foo($p) {
include_once($p); // please dont mind the inclusion hole
}
$x = 42;
// this however, is included by a function...
// does the function's scope influence the stuff it includes?
echo $x; // undefined variable
?>
Mon éditeur est le package Eclipse/Zend.
Je suis porté à croire que vous avez raison. Placer un $ global à l'intérieur de la fonction foo() fixe également l'erreur de notices. Je serais intéressé de voir n'importe quelle page de doc à ce sujet, et pourquoi PHP réussit toujours à exécuter le code juste bien mais produit un avis. –
La raison pour laquelle vous n'obtenez pas d'erreur est simple: L'utilisation de variables non déclarées n'est pas une erreur dans PHP.Il produit toujours un avertissement et continue l'exécution. C'est pourquoi je préfère toujours déclarer mes propres gestionnaires d'erreur et lancer une exception sur toutes les erreurs/avertissements/avis. Un bon code ne devrait en produire aucun de toute façon. – soulmerge