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 52 53 54 55
| <?php
class SymptomeDAO{
/* Ici on déclare les attributs en private (privé) il ne sont alors accéssible qu'à l'interieur de la classe,
* Si tu essaye d'y accéder par exemple par $test->bdd qui est l'objet déclaré en dehors de la classe tu aura une violation de droits sur ta classe,
* les attributs sont toujours déclarés en private,c'est le principe de de l'encapsulation,
* tes fonctions sont généralement déclarer public pour pouvoir y accéder en dehors de la classe, comme dans l'exemple, mais il est possible que tu ne donne pas accès à des fonction qui ne seront alors "appelable" que par les fonction de ta classe elles seront alors déclarées en private,
* $test->getSymptomeParCode(); qui te permet de lancer une requête,
* pour cet objet tu a donc un attribut bdd qui sera réutilisé à chaque fois sans avoir besoin de te reconnecter,
* un attribut requête qui récupère le résultat de l'appel de la fonction prepare() de $bdd,
* et l'attribut resultat qui permet de traiter ce résultat obtenu avec la requête,
* la fonction __construct est OBLIGATOIRE elle sert a initialiser tes attributs à l'instanciation de ton objet,
* elle te permet de donner une valeur de départ à tes variables, dans l'exemple je leur donne la valeur vide pour les chaines de caractère,
* et me connecte à mysql pour l'attribut $bdd, tu pourrait très bien lui donner la valeur vide et créer une fonction de connexion à la BDD qui reçoit l'adresse du serveur et autres paramètres,
* ou alors donner au constructeur des paramètres comme une fonction normal et quand tu instanciera un objet tu envoi les paramètres au constructeur :
* $test = new SymptomeDAO('localhost', 'test', 'user', 'pwd');
* et dans ton constructeur :
* public function __construct($host, $dbName, $user, $mdp){
* $this->bdd = new PDO('mysql:host=' . $host . ';dbname=' . $dbName, $user, $mdp);
* }
* La dernière chose importante dans ta class tu est obliger d'utiliser $this->nomAttribut pour utiliser les attributs local à ta classe,
* pour la POO je te renvoi au excelent cours disponible sur le site pour en apprendre plus !
*/
private $bdd, $resultat, $requete;
public function __construct(){
try
{
$this->bdd = new PDO('mysql:host=localhost;dbname=inforacle', 'inforacle', 'inforacle');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$this->resultat = "";
$this->requete = "";
}
public function getSymptomeParCode($code){
$this->requete = $this->bdd->prepare($code);
$this->requete->execute();
while( $this->resultat = $this->requete->fetch() ){
echo $this->resultat['nomCompte'];
}
}
}
$test = new SymptomeDAO();
$test->getSymptomeParCode('SELECT * from utilisateurs');
?> |
Partager