nouvel inscrit, et déjà un pépin
J'effectue quelques modifications dans le code d'osTicket (http://osticket.com/). Et je tombe sur un morceau de code que je ne comprends pas du tout (mais qui fonctionne).
C'est la fonction qui effectue la connexion à la base de données. Un truc comme on en voit partout. Sauf que là, le développeur utilise une variable indirecte nommée $$dblink.
Or la variable $dblink (avec un seul $) n'est jamais initialisée. Ni dans cette fonction, ni dans ce fichier, ni ailleurs. Aucune autre occurrence de $dblink ou $$dblink.
Ce qui veut dire que $$dblink n'a pas vraiment de signification (dans mon esprit hein, puisqu'en vrai ça fonctionne).
Le code de la fonction:
Code : Tout sélectionner
function db_connect($dbhost,$dbuser, $dbpass,$dbname = "") {
if(!strlen($dbuser) || !strlen($dbpass) || !strlen($dbhost))
return NULL;
@$$dblink = mysql_connect($dbhost, $dbuser, $dbpass);
if($$dblink && $dbname)
@mysql_select_db($dbname);
//set desired encoding just in case mysql charset is not UTF-8 - Thanks to FreshMedia
if($$dblink) {
@mysql_query('SET NAMES "UTF8"');
@mysql_query('SET COLLATION_CONNECTION=utf8_general_ci');
}
return $$dblink;
}A chaque passage dans cette fonction, PHP affiche un avertissement comme quoi $$dblink n'est pas définie.
Code : Tout sélectionner
Notice: Undefined variable: dblink in xxxxx/include/mysql.php on line 27Ma question est: comment est-il possible que ce code fonctionne (puisque l'application fonctionne) alors que $dblink n'est pas initialisée, et donc que $$dblink ne veux rien dire ?
note: j'ai vérifié qu'il n'existe pas d'autre endroit où mysql_connect est utilisée.