PHP5. Programmation orientée objet. A. Belaïd 1



Documents pareils
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Premiers Pas en Programmation Objet : les Classes et les Objets

Chapitre 2. Classes et objets

Programmer en JAVA. par Tama

Cours 1: Java et les objets

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

CREATION WEB DYNAMIQUE

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

as Architecture des Systèmes d Information

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

TP1 : Initiation à Java et Eclipse

Programmation Web. Madalina Croitoru IUT Montpellier

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

PHP 5. La base de données MySql. A. Belaïd 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Héritage presque multiple en Java (1/2)

Cours 14 Les fichiers

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Remote Method Invocation (RMI)

Création d objet imbriqué sous PowerShell.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Diagramme de classes

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

PHP. PHP et bases de données

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

RMI le langage Java XII-1 JMF

Programmation Objet - Cours II

Les frameworks au coeur des applications web

Programmation par composants (1/3) Programmation par composants (2/3)

TD/TP PAC - Programmation n 3

TP1. Outils Java Eléments de correction

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Stockage du fichier dans une table mysql:

UML et les Bases de Données

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

TD/TP PAC - Programmation n 3

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation par les Objets en Java

Formation : WEbMaster

Aide - mémoire gnuplot 4.0

Le stockage local de données en HTML5

Java c est quoi? Java pourquoi?

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

GOL502 Industries de services

Présentation du langage et premières fonctions

Programmation Orientée Objet application au langage Java Version Novembre 2007

Devenez un véritable développeur web en 3 mois!

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Mysql avec EasyPhp. 1 er mars 2006

Automatisation de l administration système

Plan Pédagogique du cours

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

4. Groupement d objets

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Génie Logiciel avec Ada. 4 février 2013

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction au Génie Logiciel

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

TD4 - Supervision et métrologie des réseaux. 1 Supervision des applications et services réseaux et des ressources locales

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

PDO : PHP Data Object 1/13

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Dans l'article précédent, vous avez appris

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

PHP 4 PARTIE : BASE DE DONNEES

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Programmation Orientée Objet

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Une introduction à Java

Corrigés des premiers exercices sur les classes

Introduction à MATLAB R

Application web de gestion de comptes en banques

Généralités sur le Langage Java et éléments syntaxiques.

TD3: tableaux avancées, première classe et chaînes

Chapitre VI- La validation de la composition.

Perl Orienté Objet BioPerl There is more than one way to do it

TP JAVASCRIPT OMI4 TP5 SRC

HTML. Notions générales

et Programmation Objet

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Transcription:

PHP5 Programmation orientée objet A. Belaïd 1

La POO en PHP Intérêt Progrès par rapport à la version PHP4 Permet de rassembler autour d un même objet (concept), une définition, des attributs et des méthodes d action de réutiliser des objets existants en les complétant par ce qui est nouveau D où des avantages liés à : La clarté du code La modularité La réutilisabilité L interopérabilité A. Belaïd 2

La POO en PHP Qu est ce qu un objet? Un objet est toute donnée manipulée Exemples la voiture de mon voisin mon compte bancaire Qu est ce que les attributs et les méthodes? Chaque objet a des attributs qui lui sont propres Mon compte bancaire a 3 attributs Le numéro du compte Le solde actuel Liste des différentes opérations Les objets peuvent avoir des méthodes Ce sont des actions que l on peut appliquer à un objet Solder Créditer A. Belaïd 3

Classes et instances Qu est ce qu une classe? C est un modèle de donnée On peut la voir comme une famille d objets Tous les objets de la classe sont similaires Partagent les mêmes attributs et les mêmes méthodes Exemple Classe rassemblant toutes les voitures Attributs Toutes les voitures (les objets) ont des plaques d immatriculation, un moteur, un nombre de portières Méthodes Toutes les voitures (les objets) ont des méthodes pour démarrer, freiner, accélérer A. Belaïd 4

Classes et instances Qu est ce qu une instance? Une instance est une représentation particulière d une classe Exemple Mégane est une classe La voiture que vous venez d acheter est une instance Elle est bleue, sans options Une autre instance est la voiture rouge garée en bas de chez vous A. Belaïd 5

Classes et instances Utilisation simple des objets Déclarer une classe class voiture { //contenu de la classe Attributs Le contenu de la classe est structuré en deux parties La première partie permet de déclarer les attributs Les attributs sont déclarés en utilisant la syntaxe des variables et un des mots-clés suivant : public, private ou protected Exemple class voiture { public $marque; A. Belaïd 6

Classes et instances Il est possible d utiliser une valeur par défaut <?php class voiture { public $marque= Ferrari ;?> Méthodes La deuxième partie du contenu d une classe permet la déclaration des méthodes Ces méthodes se déclarent exactement comme des fonctions Exemple <?php class voiture { public $marque= Ferrari ; function freiner($force_de_freinage){ //instructions pour faire freiner?> A. Belaïd 7

Classes et instances Créer un objet On vient de voir que créer une classe n est pas suffisant pour pouvoir l utiliser Pour l utiliser proprement et avoir accès à ses paramètres, il faut en créer des instances : objets $var_objet = new nom_classe() Attention le code de définition de la classe doit être dans le même script ou inclus au début du script à l aide des fonctions require() ou include() On peut créer plusieurs objets représentant des actions boursières conformes au modèle de la classe action : $action1 = new action(); $action2 = new action(); A. Belaïd 8

Classes et instances Accès aux propriétés d un objet Pour accéder, aussi bien en lecture qu en écriture, à la propriété prop d un objet, on utilise : > $nom_objet >prop; ou encore : $nom_objet >prop[n]; si la propriété prop de l objet est un tableau Pour appeler une méthode de l objet, appliquez la même notation : $nom_objet >nom_fonction(); A. Belaïd 9

Exemple : objet4.php <?php require("objet2.php"); //Création d'une action $action1= new action(); //Affectation de deux propriétés $action1->nom = "Mortendi"; $action1->cours = 15.15; //utilisation des propriétés echo "<b>l'action $action1->nom cotée à la $action1->bourse vaut $action1->cours </b><hr>"; //Appel d'une méthode $action1->info(); echo "La structure de l'objet \$action1 est : <br>"; var_dump($action1); echo "<h4>descriptif de l'action</h4>"; foreach($action1 as $prop=>$valeur){ echo "$prop = $valeur <br />"; if($action1 instanceof action) echo "<hr />L'objet \$action1 est du type action";?> A. Belaïd 10

Exemple : objet4.php : résultat A. Belaïd 11

Classes et instances Accès aux variables de la classe Les variables propres de la classe ne sont pas accessibles directement à l extérieur du script qui définit la classe De même pour les méthodes Cette particularité est nommée encapsulation et permet en quelque sorte de protéger la «cuisine» interne, conçue pour créer une classe De la même façon, si vous essayez d utiliser dans une méthode une variable déclarée de la classe, vous n obtenez aucun résultat A. Belaïd 12

Classes et instances Accès aux variables Pour qu une méthode accède aux variables déclarées dans la classe, elle doit y faire appel à l aide de la syntaxe suivante : $this >mavar La pseudo-variable $this fait référence à l objet en cours, ce qui permet d utiliser la variable $mavar dans la méthode La méthode info() de la classe action peut maintenant être enrichie et avoir comme fonctionnalité supplémentaire d afficher toutes les propriétés d un objet action On peut, par exemple, remplacer la ligne de code d objet4.php echo "<b>l'action $action1->nom cotée à la $action1- >bourse vaut $action1->cours </b><hr>"; par le code suivant, qui fera partie du corps de la fonction info() : A. Belaïd 13

Classes et instances if(isset($this >nom) && isset($this >cours)) { echo "<b>l'action $this >nom cotée à la bourse de {$this >bourse[0] vaut $this >cours </b><br />"; Cet accès aux variables de la classe est aussi valable si l une de ces variables est un tableau Exemple, supposons que $montab a été déclaré comme suit : public $montab = array("valeur1","valeur2"); Pour accéder à la valeur d un de ses éléments, on peut écrire : $this >montab[1] A. Belaïd 14

Autre exemple : objet5.php montrant l utilisation des variables et constantes de la classe. $_SERVER permet de lire le nom du serveur <?php class action { //Définition d'une constante const PARIS="Palais Brognard"; const NEWYORK="Wall Street"; //Variables propres de la classe public $nom ; public $cours; public $bourse=array("paris ","9h00","18h00"); //fonctions propres de la classe function info(){ global $client; //Utilisation de variables globales et d'un tableau superglobal echo "<h2> Bonjour $client, vous êtes sur le serveur: ",$_SERVER["HTTP_HOST"],"</h2>"; echo "<h3>informations en date du ",date("d/m/y H:i:s"),"</h3>"; echo "<h3>bourse de {$this->bourse[0] Cotations de {$this->bourse[1] à {$this->bourse[2] </h3>"; A. Belaïd 15

?> //Informations sur les horaires d'ouverture $now=getdate(); $heure= $now["hours"]; $jour= $now["wday"]; echo "<hr />"; echo "<h3>heures des cotations</h3>"; if(($heure>=9 && $heure <=17)&& ($jour!=0 && $jour!=6)) {echo "La Bourse de Paris ( ", self::paris," ) est ouverte <br>"; else { echo "La Bourse de Paris ( ", self::paris," ) est fermée <br>"; if(($heure>=16 && $heure <=23)&& ($jour!=0 && $jour!=6) ) {echo "La Bourse de New York ( ", self::newyork," ) est ouverte <hr>"; else {echo "La Bourse de New York ( ", self::newyork," ) est fermée <hr>"; //Affichage du cours if(isset($this->nom) && isset($this->cours)) {echo "<b>l'action $this->nom cotée à la bourse de {$this->bourse[0] vaut $this->cours </b><br />"; A. Belaïd 16

Classes et instances Accessibilité des propriétés : 3 options Public Permet l accès universel à la propriété, aussi bien dans la classe que dans tout le script, y compris pour les classes dérivées, comme vous l avez vu jusqu à présent Protected La propriété n est accessible que dans la classe qui l a créée et dans ses classes dérivées Private C est l option la plus stricte : l accès à la propriété n est possible que dans la classe et nulle part ailleurs A. Belaïd 17

Exemple : objet6-2.php <?php class acces{ //Variables propres de la classe public $varpub ="Propriété publique"; protected $varpro="propriété protégée"; private $varpriv="propriété privée"; function lireprop() { echo "Lecture publique: $this >varpub","<br />"; echo "Lecture protégée: $this >varpro","<br />"; echo "Lecture privée: $this >varpriv","<hr />"; $objet=new acces(); $objet >lireprop(); echo $objet >varpub; //echo $objet >varpriv; Erreur fatale //echo $objet >varpro; Erreur fatale echo "<hr />"; foreach(get_class_vars('acces') as $prop=>$val) { echo "Propriété ",$prop," = ",$val,"<br />";?> A. Belaïd 18

Classes et instances Accessibilité des méthodes On retrouve les 3 options Public La méthode est utilisable par tous les objets et instances de la classe et de ses classes dérivées Protected La méthode est utilisable dans sa classe et dans ses classes dérivées, mais par aucun objet Private La méthode n est utilisable que dans la classe qui la contient, donc ni dans les classes dérivées, ni par aucun objet Tout appel d une méthode en dehors de son champ de visibilité provoque une erreur fatale A. Belaïd 19

Exemple : objet7.php <?php class accesmeth{ //Variables propres de la classe private $code="mon code privé"; //protected $varpro="mon code protégé"; //****************************************** //Méthodes //Méthode privée private function lirepriv(){ echo "Lire privée ",$this->code,"<br />"; //Méthode protégée protected function lirepro(){ echo "Lire protégée ",$this->code,"<br />"; //Méthode publique public function lirepub(){ echo "Lire publique : ",$this->code,"<br />"; $this->lirepro(); $this->lirepriv(); A. Belaïd 20

Exemple : objet7.php //Appels des méthodes $objet=new accesmeth();//7 $objet->lirepub();//8 $objet->lirepro();//erreur//9 //$objet->lirepriv();//erreur//10?> La création d un objet et l appel des différentes méthodes montrent que seule la méthode publique est utilisable par un objet A. Belaïd 21

Constructeurs et destructeurs Constructeur Manière de créer des objets et de définir leurs propriétés en une seule opération void construct(divers $argument1,,argumentn) Méthode : dite «méthode magique» comme toutes celles qui commencent par porte le même nom, quelle que soit la classe, ce qui permet des mises à jour sans avoir à modifier le nom du constructeur ne retourne aucune valeur appelée automatiquement lors de la création de l objet A. Belaïd 22

Constructeurs et destructeurs Destructeur void destruct() Méthode : s utilise sans paramètre ne retourne aucune valeur appelée automatiquement soit après la destruction explicite de l objet avec la fonction unset(), soit après la fin du script contient typiquement des instructions qui permettent de gérer proprement la destruction d un objet, comme la fermeture explicite d un fichier ou d une connexion à une base de données A. Belaïd 23

Exemple : objet9.php <?php class action { private $propnom; private $propcours; protected $propbourse; function construct($nom,$cours,$bourse="paris"){ $this->propnom=$nom; $this->propcours=$cours; $this->propbourse=$bourse; function destruct(){ echo "L'action $this->propnom n'existe plus!<br />"; A. Belaïd 24

Exemple : objet9.php (suite) //Création d'objets $alcotel = new action("alcotel",10.21); $bouch = new action("bouch",9.11,"new York"); $bim = new action("bim",34.50,"new York"); $ref=&$bim; var_dump($alcotel); echo "<hr />"; unset($alcotel); unset($bim); echo "<hr /><h4> FIN du script </h4><hr />";?> A. Belaïd 25

Déférencement Principe Il s agit d enchaîner des méthodes Ceci est possible quand la première produit un objet Syntaxe : $varobj >methode1() >methode2(); A. Belaïd 26

Exemple : objet10.php <?php class varchar { private $chaine; function construct($a){ $this->chaine= (string)$a; function add($addch){ $this->chaine.=$addch; return $this; function getch(){ return $this->chaine; //Création d'objet $texte=new varchar("apache "); echo $texte->getch(),"<hr />"; echo $texte->add( " PHP 5 ")->getch(),"<hr />"; echo $texte->add(" MySQL ")->add("sqlite ")->getch(),"<hr />";?> A. Belaïd 27

Typage des paramètres Nouvelle possibilité PHP 4 ne permettait pas de typer les paramètres d une fonction personnelle PHP 5 le permet mais uniquement pour les paramètres qui sont de type object ou array Exemple function (action $var) { //Corps de la fonction Dans ce cas, le paramètre $var doit être un objet instancié à partir de la classe action A. Belaïd 28