15
PHP en Objet Exemple PDO

Orienté objet Php5 et PDO

Embed Size (px)

Citation preview

Page 1: Orienté objet Php5 et PDO

PHP en ObjetExemple PDO

Page 2: Orienté objet Php5 et PDO

Quel objet?

• un objet est une pièce de logiciel constituée de données et de procédures qui agissent sur ces données.

• Les attributs (la valeur de ses données) : décrivent un objet et le distinguent des autres.

• Le comportement (ses opérations ou méthodes): la description des actions d’un objet

• Un objet a un état (l'ensemble des valeurs de ses attributs à un moment donné) et un comportement (l'ensemble des algorithmes décrits dans ses méthodes).

Page 3: Orienté objet Php5 et PDO

Un Objets est mystérieu• L'encapsulation est le procédé qui permet de séparer clairement

l'interface (partie publique) de l'objet de son implémentation (partie privée).

• L'idée est de masquer tout ce qui pourrait rendre les autres objets dépendants (principe de faible couplage entre objets).

• La contrepartie est qu'un objet doit avoir une forte cohésion interne (il ne doit traiter que ce qui le concerne, mais tout ce qui le concerne).

• Un objet est rarement utile isolément. Il faut voir la programmation objet comme une collection d'objets qui coopèrent ensemble.

• On dit que les objets s'échangent des messages. En fait, ils se rendent des services entre eux par appel de méthodes.

Page 4: Orienté objet Php5 et PDO

Un objet a la classe

• Les états et les comportements des objets sont définis par des classes qui sont des modèles pour la construction des objets.

• La classe est un prototype qui définit un type d'objet.• On dira qu'un objet est une instance de classe (en fait, une

variable d'un certain type).• Chaque objet d'une même classe a ses propres valeurs

d'attributs mais un comportement identique (les mêmes méthodes).

• Un constructeur est une méthode spéciale qui est utilisée pour initialiser un objet nouvellement créé.

Page 5: Orienté objet Php5 et PDO

PHP5Capturer l’exceptionnel

Try{//code à essayer}Catch(Exception $ex){

Echo $ex.getMessage();}

Page 6: Orienté objet Php5 et PDO

PHP5, le php objet<?php// Déclaration de la classeclass voiture {

public $marque ;function freiner( $force_de_freinage ) {// Instructions pour faire freiner}

}// Instanciation d’un objet$mavoiture = new voiture() ;?>

Page 7: Orienté objet Php5 et PDO

Classe et objet php<?phpclass voiture {

public $vitesse = 0;function avance( $temps ) {

$distance = $temps * $this->vitesse ;echo "Pendant ces $temps heures on a avancé de $distance km" ;

}}$ma_voiture = new voiture() ;$ma_voiture->vitesse = 100 ; // On avance à 100 km/hecho 'Actuellement notre vitesse est de ' ;echo $ma_voiture->vitesse, 'km/h<br>';$ma_voiture->avance( 2 ) ; // On avance 2h?>

Page 8: Orienté objet Php5 et PDO

Constantes de classe<?phpclass TondeuseGazon {

const TRACTEE = 1 ;const AUTOPORTEE = 2 ;const POUSSEE = 4 ;public $type ;

}$maTondeuse = new TondeuseGazon() ;$maTondeuse->type = TondeuseGazon::POUSSEE ;echo $maTondeuse->type ; // Affiche le chiffre 4?>

Page 9: Orienté objet Php5 et PDO

POO PHP• Constructeur destructeur :__destruct et__construct

public function __construct($marque) {$this->marque=$marque;

}

• Encapsulation : private , protected, public, set et get• Heritage : extends, final• Methodes et attributs de classe : static• $this, self et parent

class MaClasse{ const MACONSTANTE = 'constante'; public maFonction(){ return self::MACONSTANTE; }}

class MaClasseEnfant extends MaClasse{ public maNewFonction(){ return parent::MACONSTANTE; }

}

Page 10: Orienté objet Php5 et PDO

PDO accéder aux données avec classe

Connection :

$dns = 'mysql:host=localhost;dbname=formation;port=3606'; $utilisateur = 'db_rider';$motDePasse = 'azerty';$connection = new PDO( $dns, $utilisateur, $motDePasse );

Page 11: Orienté objet Php5 et PDO

PDO optionsOptions de connexion :

$options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ); $connection = new PDO( $dns, $utilisateur, $motDePasse, $options );

Page 12: Orienté objet Php5 et PDO

PDO requête$nombreDeSuppression = $connection->exec("DELETE FROM createurs");

$select = $connection->query("SELECT * FROM createurs");while( $enregistrement = $select->fetch(PDO::FETCH_OBJ) ){ // Affichage d'un des champs echo '<h1>', $enregistrement->nom, ' ', $enregistrement->prenom, '</h1>';}

Page 13: Orienté objet Php5 et PDO

Préparation$selectionPrepa = $connection->prepare('SELECT * FROM createurs WHERE YEAR(date_naiss)=?

AND nationalite=?');try { // On envois la requète $selectionPrepa->execute(array(1925, 'fr')); // Traitement while( $enregistrement = $selectionPrepa->fetch(PDO::FETCH_OBJ)){ echo '<h1>', $enregistrement->nom, ' ', $enregistrement->prenom, '</h1>'; } } catch( Exception $e ){ echo 'Erreur de requète : ', $e->getMessage();}

Page 14: Orienté objet Php5 et PDO

Nommer les interrogations$selectionPrepa = $connection->prepare(

'SELECT * FROM createurs WHERE nom LIKE :search OR prenom LIKE :search’);$selectionPrepa->execute(array('search'=>'%gi%'));

$insert = $connection->prepare('INSERT INTO createurs VALUES(NULL, :nom, :prenom, :date_naiss, :date_mort, :nationalite, :pseudo)');try {

$success = $insert->execute(array( 'nom'=>'Dus', 'prenom'=>'Jean-Claude', 'date_naiss'=>date('Y-m-d'), 'date_mort'=>NULL, 'nationalite'=>'fr', 'pseudo'=>NULL ));

if( $success ) { echo "Enregistrement réussi"; } } catch( Exception $e ){ echo 'Erreur de requète : ', $e->getMessage();}

Page 15: Orienté objet Php5 et PDO

Binder pour aller plus loin

$insert = $connection->prepare('INSERT INTO createurs VALUES(NULL, :nom, :prenom, :date_naiss, :date_mort, :nationalite, :pseudo)');try { $insert->bindParam(':nom', $nom, PDO::PARAM_STR, 100); $insert->bindParam(':prenom', $prenom, PDO::PARAM_STR, 100); $insert->bindParam(':date_naiss', date('Y-m-d')); $insert->bindParam(':nationalite, $nationalite, PDO::PARAM_STR, 2); $insert->bindParam(':pseudo', $pseudo, PDO::PARAM_STR); $insert->execute(); if( $success ) { echo "Enregistrement réussi"; } } catch( Exception $e ){ echo 'Erreur de requète : ', $e->getMessage();}