POO instancié class héritée
markaz
Messages postés
331
Date d'inscription
Statut
Membre
Dernière intervention
-
theshadoo Messages postés 786 Date d'inscription Statut Membre Dernière intervention -
theshadoo Messages postés 786 Date d'inscription Statut Membre Dernière intervention -
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 méthodes standards
Classe globalManager
Classe managerMember
Page traitement connexion membre
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.
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
<?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 méthodes standards
Classe globalManager
<?php
class manager {
protected $bdd;
public function __construct(PDO $bdd) {
$this->bdd = $bdd;
}
}
$ddb = DBconnexion::PDO();
$gManager = new manager($ddb);
?>
Classe managerMember
<?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
<?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.
A voir également:
- POO instancié class héritée
- Super poo - Forum Programmation
- Realtek audio background process class ✓ - Forum Wordpress
- Class ram - Guide
- Realtek audio admin background process class ✓ - Forum Windows
- Wrong elf class: elfclass64 - Forum Autres distributions Linux
1 réponse
Va voir du côté des design pattern singleton (qui peut tout à fait être utilisé dans ce cas là) ou bien du design pattern factory ça te permettra d'entrevoir de nouvelles possibilités.
Et soit plus explicite sur tes class car là je ne vois pas quelle class tu appelles générales.
Mais va faire un tour sur google et regarde du côté des design patterns que je viens de te citer, comme je t'ai dis cela va t'ouvrir quelques perspectives sur ta conception.
Et soit plus explicite sur tes class car là je ne vois pas quelle class tu appelles générales.
Mais va faire un tour sur google et regarde du côté des design patterns que je viens de te citer, comme je t'ai dis cela va t'ouvrir quelques perspectives sur ta conception.