Problème variable dans une new PDO
RésoluCorentinRoche Messages postés 287 Statut Membre -
Bonjour,
Alors la je comprend pas ..
Je définie des variables au dessus de ma fonction ..
//Variable IP Serveur BDD
$serveur_bdd = "172.16.1.120";
//Variable Nom database
$database_name = "DASHDEV";
//Varaible Utilisateur BDD
$database_user = "test";
//Varaible mot de passe BDD
$database_password = "test";
function get_pdo (): PDO {
return new PDO("mysql:host=".$serveur_bdd.";dbname=".$database_name , $database_user, $database_password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
}
En résultat j'ai Undefined variable.... Alors que je peux très bien les echo ...
Le echo n'est pas dans mon exemple de code au dessus mais je vous assure qu'elle sont bien afficher...
Si vous avez des idées ...
Windows / Opera 92.0.0.0
Cordialement,
Roche Corentin
1 réponse
-
Bonjour,
C'est un problème de portée des variables.
Soit tu les définis en tant que constantes ...
Soit, dans ta fonction, tu y fais appel en global
https://www.php.net/manual/en/language.variables.scope.php
-
Bonjour, Merci de votre retour !
J'ai bien regarde la doc la dessus je comprend pas la difference entre mon code est clui donnée dans l'exemple php :
<?php $a = 1; /* global scope */ function test() { echo $a; /* reference to local scope variable */ } test(); ?>Hormis les Guillemets sur les variables
$serveur_bdd = "172.16.1.120";
Je viens de voir la doc sur globals que je ne connaissez pas. Effectivement cela fonctionne bien !
function get_pdo (): PDO { return new PDO("mysql:host=".$GLOBALS['serveur_bdd'].";dbname=".$GLOBALS['database_name'] , $GLOBALS['database_user'], $GLOBALS['database_password'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); }
-