Lors de la transmission d'une valeur inexistante par référence, PHP crée la valeur et la définit sur NULL. Je l'ai remarqué quand des augmentations de mémoire se produisaient en vérifiant des valeurs vides dans certaines fonctions. Prenez la fonction suivante:L'utilisation de la référence à des valeurs inexistantes définit une variable sur NULL?
function v(&$v,$d=NULL){return isset($v)?$v:$d;}
$bar = v($foo, $default);
Ce serait un raccourci pour:
if(isset($foo))
{
$bar = $foo;
}
else
{
$bar = $default;
}
Cependant, lors du passage des variables non existantes PHP les crée. Dans le cas de variables - elles sont supprimées dès que la méthode/fonction se termine - mais pour vérifier des tableaux super globaux comme $ _GET ou $ _POST, l'élément de tableau n'est jamais supprimé, ce qui augmente l'utilisation de la mémoire.
$request_with = v($_SERVER['HTTP_X_REQUESTED_WITH']);
Quelqu'un peut-il expliquer pourquoi cela se produit et si elle est une solution de todo PHP ou une fonction pour une autre utilisation fou de valeurs?
Quel est l'environnement de votre serveur? – RobertPitt
PHP 5.3.x sur Debian, Ubuntu et Windows XP exécutant PHPFastcgi. – Xeoncross