Site Web avec PHP et MySQL
La programmation orient?e objet
Cr?er une class
Code PHP :
<?php class Membre { private $pseudo; private $email; private $signature; private $actif; //fonction constructeur //Le r?le d'une fonction constructeur est justement de construire l'objet, // c'est-?-dire de le pr?parer ? une premi?re utilisation. public function __construct($idMembre) { // R?cup?rer en base de donn?es les infos du membre // SELECT pseudo, email, signature, actif FROM membres WHERE id = ... // D?finir les variables avec les r?sultats de la base $this->pseudo = $donnees['pseudo']; $this->email = $donnees['email']; // etc. } public function envoyerEMail($titre, $message) { mail($this->email, $titre, $message); } public function bannir() { $this->actif = false; $this->envoyerEMail('Vous avez ?t? banni', 'Ne revenez plus !'); } //les getters et les setters public function getPseudo() { return $this->pseudo; } public function setPseudo($nouveauPseudo) { if (!empty($nouveauPseudo) AND strlen($nouveauPseudo) < 15) { $this->pseudo = $nouveauPseudo; } } } ?>
Cr?er un objet
Code PHP :
<?php include_once('Membre.class.php'); $membre = new Membre(32); $membre->setPseudo('M@teo21'); echo $membre->getPseudo() . ', je vais te bannir !'; $membre->bannir(); ?>
Pour d?truire un objet, ou toute autre variable, on peut le faire ? la main avec la fonction unset() :
<?php
unset($membre);
?>
H?ritage
Code PHP :
<?php include_once('Membre.class.php'); class Admin extends Membre { private $couleur; public function setCouleur() { // ... } public function getCouleur() { // ... } } ?>
C'est cela l'h?ritage : nous avons maintenant une classe Admin qui poss?de toutes les variables et fonctions de Membre, et nous allons pouvoir en d?finir de nouvelles qui seront propres aux admins.
Les droits d'acc?s
Il y a trois droits d'acc?s ? conna?tre :
public : tout le monde peut acc?der ? l'?l?ment ;
private : personne (? part la classe elle-m?me) n'a le droit d'acc?der ? l'?l?ment ;
protected : identique ? private, sauf qu'un ?l?ment ayant ce droit d'acc?s dans une classe m?re sera accessible aussi dans les classes filles.
Code PHP :
<?php $membre = new Membre(4); $membre->setPseudo('M@teo21'); // OK car setPseudo est public $membre->pseudo = 'M@teo21'; // Interdit car $pseudo est private ?>
Toutes les variables d'une classe doivent toujours ?tre priv?es ou prot?g?es.