Orienté objet Php5 et PDO

Post on 20-Jun-2015

1.103 views 0 download

Transcript of Orienté objet Php5 et PDO

PHP en ObjetExemple 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).

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.

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éé.

PHP5Capturer l’exceptionnel

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

Echo $ex.getMessage();}

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() ;?>

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?>

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?>

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; }

}

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 );

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 );

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>';}

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();}

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();}

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();}