Bonjour, j'apprend nouvellement la POO et j'utilise PDO pour la connexion, affichage des info de ma BDD.

J'ai 3 classes:
- une pour la connexion à la BDD,
- une qui contient les méthodes d'ordre générale (affichage, etc..)
- et une pour gérer les méthodes spécifiques telle que les membres (connexion, ajout, modification, etc...) qui extends de la class des méthodes générales

Mon problème c'est comment appeler une méthode de la class "méthodes générales" dans la class fille afin de bénéficier de ses méthodes.

Classe connexio BDD

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
<?php
  class DBconnexion {
 
	  public static function PDO() {
 
		   try {
		  	$bdd= new PDO('mysql:host=localhost;dbname=ajmci', 'root', '', array(
		  		  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
				  PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
		   } 
		    catch(PDOException $e){
			 die('<h1>Impossible de se connecter a la base de donnees</h1>');   
		   }
 
		   return $bdd;
	  }
  }
?>
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
Classe globalManager
 
<?php
	class manager {
 
	  protected $bdd;
 
 
	  public function __construct(PDO $bdd) {
		  $this->bdd = $bdd;
	  } 
}
 
 $ddb = DBconnexion::PDO();
 $gManager = new manager($ddb);
 
?>
Classe managerMember

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
<?php
	session_start(); //On demarre la session
 
	class memberManager extends manager {
 
	  public $table;
	  public $login;
	  protected $password;
 
	    //Fonction connexion membre
        function logMember($table, $login, $password){
 
        //execute login via function prepare pour prevenir les injection MySQL 
        $result = $this->bdd->prepare("SELECT * FROM ".$table." WHERE login ='".$login."' AND  
                      motpass = '".$password."'");
        $result->execute();
		$data = $result->fetch(PDO::FETCH_OBJ);
		$row = count($data);
 
        if($row != 0){
            if(($data->login == $login) && $data->motpass == $password){
                $_SESSION['login'] = $data->login;
                $_SESSION['profil'] = $data->profil;
                return true;
            }
 
        }else{
            return false;
        }
 
    }
 }
 
$gManagerMember = new memberManager;	  
?>
Page traitement connexion membre

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
<?php
    require('class/db.class.php');
    require('class/manager.class.php');
    require('class/memberManager.class.php');
 
 
	if($_POST) {
		$table = "administrateur";
	        $login = $_POST['login'];
		$password = $_POST['motpasse'];
 
		$connect = $gManagerMember->logMember($table, $login, $password);
 
		if($connect == true){
			echo 'Bon';
            exit;
		}
		else {
			echo "pas bon";
		}
	}
?>
Erreur affiché
Catchable fatal error: Argument 1 passed to manager::__construct() must be an instance of PDO, none given, called in D:\EasyPHP-12.1\www\ajmci_news\class\memberManager.class.php on line 33 and defined in D:\EasyPHP-12.1\www\ajmci_news\class\manager.class.php on line 14
NB: le principe pour moi c'est d'avoir une classe qui traite les méthodes standarts et une classe fille qui elle traite les méthodes spécifiques.