Bonsoir,

je cherche à comprendre le fonctionnement de PDO et de sa portée.
j'ai réalisé un petit script qui fonctionne mais je cherche à comprendre certain principe qui m'échappe

Class Connexion.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
<?php
 
require 'Connexion_Param.php';
 
Class Connexion {
 
	private $_host = BD_HOST;
	private $_dbName = DB_NAME; 
	private $_user = DB_USER;
	private $_pass = DB_PASS; 
	private $_charset = BD_CHARSET; 
 
	private $_error; 
	private $_qerror; 
 
	private $pdo; 
 
	public function __construct ()
	{
		try
		{
			$dsn ="mysql:host=".$this->_host.";dbname=".$this->_dbName.";charset=".$this->_charset; 
			$this->pdo = new PDO ($dsn, $this->_user, $this->_pass); 
			$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
			$this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
		}
		catch (PDOException $e)
		{
			echo 'Erreur de connection'. $e->getMessage(); 
		}	
	}
 
 
    static function getPDO(){  // est-il possible de créer une méthode appelée à partir d'un appel Connexion::getPDO (voir fichier Essai.php)
        if(!self::$pdo){
            self::$pdo = new Connexion();
        }
        //echo 'connexion ok';
        return self::$pdo;
    }
 
 
	/*public function getPDO (){                 avec cette méthode j'arrive à créer ma connexion et réaliser mes req SQL dans le fichier Essai.php
		return $this->pdo;
	}*/
 
}
 
 
?>
fichier : essai.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
 
require_once 'Connexion.php'; 
//$bdd = (new Connexion())->getPDO();   --> avec cette méthode j'arrive à faire mes requêtes
 
$bdd = Connexion::getPDO();  // Fatal error: Access to undeclared static property: Connexion::$pdo in C:\wamp64\www\test\LOGICIEL FINAL\CLASS\Connexion.php on line 35 -> comment la rendre accessible ? je ne comprends pas tout
 
 
$sql = "SELECT * FROM ligue"; 
 
$ligues = $bdd->prepare($sql);
$ligues->execute();
 
$result = $ligues->fetchAll();
print_r($result);
Si j'ai bien lu PDO est créé localement dans une variable. Et je dois rendre cette variable accessible en dehors. J'ai lu qu'il fallait également éviter des variables globales...je suis un peu paumé...

merci pour votre aide