Soumettre la recherche
Mettre en ligne
PHP 5 et la programmation objet
•
0 j'aime
•
1,510 vues
Jean-Marie Renouard
Suivre
Présentation des aspects objet du PHP 5
Lire moins
Lire la suite
Ingénierie
Affichage du diaporama
Signaler
Partager
Affichage du diaporama
Signaler
Partager
1 sur 52
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Client base de données en PHP5
Client base de données en PHP5
Jean-Marie Renouard
PHP5 et les fichiers
PHP5 et les fichiers
Jean-Marie Renouard
Syntaxe du langage PHP
Syntaxe du langage PHP
Jean-Marie Renouard
Gestion de formulaires en PHP
Gestion de formulaires en PHP
Jean-Marie Renouard
SQL et MySQL
SQL et MySQL
Jean-Marie Renouard
Fichier XML et PHP5
Fichier XML et PHP5
Jean-Marie Renouard
Le client HTTP PHP5
Le client HTTP PHP5
Jean-Marie Renouard
Configuration PHP5
Configuration PHP5
Jean-Marie Renouard
Recommandé
Client base de données en PHP5
Client base de données en PHP5
Jean-Marie Renouard
PHP5 et les fichiers
PHP5 et les fichiers
Jean-Marie Renouard
Syntaxe du langage PHP
Syntaxe du langage PHP
Jean-Marie Renouard
Gestion de formulaires en PHP
Gestion de formulaires en PHP
Jean-Marie Renouard
SQL et MySQL
SQL et MySQL
Jean-Marie Renouard
Fichier XML et PHP5
Fichier XML et PHP5
Jean-Marie Renouard
Le client HTTP PHP5
Le client HTTP PHP5
Jean-Marie Renouard
Configuration PHP5
Configuration PHP5
Jean-Marie Renouard
Email et PHP5
Email et PHP5
Jean-Marie Renouard
MVC / Frameworks PHP
MVC / Frameworks PHP
Jean-Marie Renouard
Les structures de données PHP5
Les structures de données PHP5
Jean-Marie Renouard
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
Jean-Marie Renouard
Javascript et JQuery
Javascript et JQuery
Jean-Marie Renouard
Le client FTP de PHP5
Le client FTP de PHP5
Jean-Marie Renouard
Présentation de PHP
Présentation de PHP
Jean-Marie Renouard
php2 : formulaire-session-PDO
php2 : formulaire-session-PDO
Abdoulaye Dieng
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
Pierre Faure
PHP5 - POO
PHP5 - POO
mazenovi
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
Engineor
Bases de PHP - Partie 1
Bases de PHP - Partie 1
Régis Lutter
Php & My Sql
Php & My Sql
guest6c050e
Pratique de la programmation en go
Pratique de la programmation en go
kader15
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
Kristen Le Liboux
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
Cours php
Cours php
csskaled
Formation PHP
Formation PHP
kemenaran
Presentation langage go_19022015
Presentation langage go_19022015
Stéphane Legrand
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
Jean-Marie Renouard
Ssh cookbook
Ssh cookbook
Jean-Marie Renouard
Structure de données en PHP
Structure de données en PHP
Jean-Marie Renouard
Contenu connexe
Tendances
Email et PHP5
Email et PHP5
Jean-Marie Renouard
MVC / Frameworks PHP
MVC / Frameworks PHP
Jean-Marie Renouard
Les structures de données PHP5
Les structures de données PHP5
Jean-Marie Renouard
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
Jean-Marie Renouard
Javascript et JQuery
Javascript et JQuery
Jean-Marie Renouard
Le client FTP de PHP5
Le client FTP de PHP5
Jean-Marie Renouard
Présentation de PHP
Présentation de PHP
Jean-Marie Renouard
php2 : formulaire-session-PDO
php2 : formulaire-session-PDO
Abdoulaye Dieng
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
Pierre Faure
PHP5 - POO
PHP5 - POO
mazenovi
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
Engineor
Bases de PHP - Partie 1
Bases de PHP - Partie 1
Régis Lutter
Php & My Sql
Php & My Sql
guest6c050e
Pratique de la programmation en go
Pratique de la programmation en go
kader15
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
Kristen Le Liboux
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
Cours php
Cours php
csskaled
Formation PHP
Formation PHP
kemenaran
Presentation langage go_19022015
Presentation langage go_19022015
Stéphane Legrand
Tendances
(19)
Email et PHP5
Email et PHP5
MVC / Frameworks PHP
MVC / Frameworks PHP
Les structures de données PHP5
Les structures de données PHP5
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
Javascript et JQuery
Javascript et JQuery
Le client FTP de PHP5
Le client FTP de PHP5
Présentation de PHP
Présentation de PHP
php2 : formulaire-session-PDO
php2 : formulaire-session-PDO
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
PHP5 - POO
PHP5 - POO
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !
Bases de PHP - Partie 1
Bases de PHP - Partie 1
Php & My Sql
Php & My Sql
Pratique de la programmation en go
Pratique de la programmation en go
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Cours php
Cours php
Formation PHP
Formation PHP
Presentation langage go_19022015
Presentation langage go_19022015
En vedette
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
Jean-Marie Renouard
Ssh cookbook
Ssh cookbook
Jean-Marie Renouard
Structure de données en PHP
Structure de données en PHP
Jean-Marie Renouard
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
Mehdi EL KRARI
Présentation de Node.js
Présentation de Node.js
Mickael Couzinet
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
Alphorm
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
ENSET, Université Hassan II Casablanca
En vedette
(7)
Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
Ssh cookbook
Ssh cookbook
Structure de données en PHP
Structure de données en PHP
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
Présentation de Node.js
Présentation de Node.js
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
Similaire à PHP 5 et la programmation objet
Traits : de la théorie à la pratique
Traits : de la théorie à la pratique
Frederic Hardy
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
Paris Salesforce Developer Group
Visual Studio 2008 Overview
Visual Studio 2008 Overview
Gregory Renard
Patterns and OOP in PHP
Patterns and OOP in PHP
julien pauli
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
La première partie de la présentation PHP
La première partie de la présentation PHP
Club Scientifique de l'ESI - CSE
Introspection reflection
Introspection reflection
Eric Toguem
Programmation Android - 09 - Web services
Programmation Android - 09 - Web services
Yann Caron
Comment écrire du code testable ?
Comment écrire du code testable ?
Fou Cha
test doc
test doc
kottiVididev
Cours php -partie 1.pdf
Cours php -partie 1.pdf
ssuserc46a93
Php 7.4 2020-01-28 - afup
Php 7.4 2020-01-28 - afup
Julien Vinber
Comment relire du code pourri sans se fatiguer
Comment relire du code pourri sans se fatiguer
Damien Seguy
Pensez objets avec java
Pensez objets avec java
Asmaa BENGUEDDACH
Annotations pour les Geeks
Annotations pour les Geeks
jviet
PHP 7 et Symfony 3
PHP 7 et Symfony 3
Eddy RICHARD
Function oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
Jean-Pierre Vincent
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
Aymen Bedwivski
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
Amel Morchdi
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
Yann Caron
Similaire à PHP 5 et la programmation objet
(20)
Traits : de la théorie à la pratique
Traits : de la théorie à la pratique
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
Visual Studio 2008 Overview
Visual Studio 2008 Overview
Patterns and OOP in PHP
Patterns and OOP in PHP
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
La première partie de la présentation PHP
La première partie de la présentation PHP
Introspection reflection
Introspection reflection
Programmation Android - 09 - Web services
Programmation Android - 09 - Web services
Comment écrire du code testable ?
Comment écrire du code testable ?
test doc
test doc
Cours php -partie 1.pdf
Cours php -partie 1.pdf
Php 7.4 2020-01-28 - afup
Php 7.4 2020-01-28 - afup
Comment relire du code pourri sans se fatiguer
Comment relire du code pourri sans se fatiguer
Pensez objets avec java
Pensez objets avec java
Annotations pour les Geeks
Annotations pour les Geeks
PHP 7 et Symfony 3
PHP 7 et Symfony 3
Function oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
PHP 5 et la programmation objet
1.
Jean-Marie Renouard LightPath
2014©
2.
Le logo PHP
est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
3.
Syntaxe de base
Auto-chargement de classes Constructeurs et destructeurs Visibilité L'héritage L'opérateur de résolution de portée (::) Les données statiques LightPath 2014© - http://www.jmrenouard.fr 3
4.
Constantes de classe
Abstraction de classes Interfaces Surcharge Parcours d'objets Masques Méthodes magiques LightPath 2014© - http://www.jmrenouard.fr 4
5.
Mot-clé "final" Clonage
d'objets Comparaison d'objets Réflexion Typage objet Les exceptions Les traits LightPath 2014© - http://www.jmrenouard.fr 5
6.
LightPath 2014© -
http://www.jmrenouard.fr 6
7.
Mot clé :
class Exemple class A { function toto() { echo « toto de A » ; } } class B{ function titi(){ A::toto(); } } LightPath 2014© - http://www.jmrenouard.fr 7
8.
Creation d'objet de
la classe $a = new A(); $b = new B(); Utilisation des objets $b->titi(); B::titi(); $a->toto(); A::toto(); LightPath 2014© - http://www.jmrenouard.fr 8
9.
LightPath 2014© -
http://www.jmrenouard.fr 9
10.
Exécution automatique de
code de chargement de classe function __autoload($class_name) { require_once $class_name . '.php'; } $obj = new MaClasse1(); $obj2 = new MaClasse2(); LightPath 2014© - http://www.jmrenouard.fr 10
11.
LightPath 2014© -
http://www.jmrenouard.fr 11
12.
Constructeur : fonction
spéciale exécutée à la création de l'objet 1 seul constructeur possible Plusieurs paramètres possibles Destructeur : fonction spéciale éxécutée à la destruction de l'objet LightPath 2014© - http://www.jmrenouard.fr 12
13.
class A {
function __construct() { print "A la construction de l'objet de type classe An"; } } LightPath 2014© - http://www.jmrenouard.fr 13
14.
class A {
function __destruct() { print "A la destruction de l'objet de type classe An"; } } LightPath 2014© - http://www.jmrenouard.fr 14
15.
LightPath 2014© -
http://www.jmrenouard.fr 15
16.
Accès “public” :
accès depuis l'extérieur Accès “protected” : accès depuis une classe dérivée Accès “private” : accès depuis une fonction de la classe uniquement LightPath 2014© - http://www.jmrenouard.fr 16
17.
LightPath 2014© -
http://www.jmrenouard.fr 17
18.
LightPath 2014© -
http://www.jmrenouard.fr 18
19.
Moyen de généraliser
des traitements Moyen de dériver des comportements spécifiques Mot clé : exends ◦class deriveB extends A LightPath 2014© - http://www.jmrenouard.fr 19
20.
Moyen d'accèder au
membre d'une classe Résolution des ambibuités de nommage $a n'est pas équivalent à $MaClasse::a self::xxx est un espace de nommage pointant sur l'objet courant parent:: xxx est un espace de nommage de la classe de base LightPath 2014© - http://www.jmrenouard.fr 20
21.
LightPath 2014© -
http://www.jmrenouard.fr 21
22.
Les variables statiques
sont des variables communes à toutes les instances de la classe Le code d'une fonction statique n'est pas dupliqué La variable statique possède des contraintes d'accès concurrentiels LightPath 2014© - http://www.jmrenouard.fr 22
23.
Variable dont la
valeur est immuable ◦const constant = 'valeur constante'; LightPath 2014© - http://www.jmrenouard.fr 23
24.
LightPath 2014© -
http://www.jmrenouard.fr 24
25.
L'abstraction de classe
consiste à déclarer des fonctions sans code. Seule une classe dérivée ( extends ) définissant le code des fonctions peut être instanciée. La démocratie : principe abstrait La république : incarnation concrète de la démocratie LightPath 2014© - http://www.jmrenouard.fr 25
26.
LightPath 2014© -
http://www.jmrenouard.fr 26
27.
Un ensemble de
déclaration sans code. Equivalent à une classe n'ayant que des fonctions publiques abstraites Mot clé “implements” permets à une classe de se faire passer pour l'interface interface Dieu { public function invoquerLePouvoir(); } LightPath 2014© - http://www.jmrenouard.fr 27
28.
LightPath 2014© -
http://www.jmrenouard.fr 28
29.
La lecture et
l'écriture peuvent être interceptées void __set ( string name, mixed value ) mixed __get ( string name ) bool __isset ( string name ) void __unset ( string name ) mixed __call ( string name, array arguments ) LightPath 2014© - http://www.jmrenouard.fr 29
30.
$this : variable
contenant l'objet courant $this vu comme un tableau à clé Chaque objet vu comme tableau à clé $class = new MyClass(); foreach($class as $key => $value) { print "$key => $valuen"; } LightPath 2014© - http://www.jmrenouard.fr 30
31.
Modèle de conception
◦Factory : modèle permettant de faciliter la construction d'un nouvel objet ◦Singleton : modèle permettant de limiter le nombre d'objet crée par classe LightPath 2014© - http://www.jmrenouard.fr 31
32.
__sleep :Avant sérialisation
de l'objet __wakeup : Après sérialisation de l'objet __toString : conversion en chaîne __set_state : export de la définition des objets __clone : Opération en cas de clonage LightPath 2014© - http://www.jmrenouard.fr 32
33.
LightPath 2014© -
http://www.jmrenouard.fr 33
34.
La fonction “final”
est la dernière de la hiérarchie. La fonction ne peut pas être dérivée LightPath 2014© - http://www.jmrenouard.fr 34
35.
LightPath 2014© -
http://www.jmrenouard.fr 35
36.
Dupliquer un objet
et l'ensemble de son état Copie de zone mémoire Ce n'est pas une simple copie de référence Fonction spéciale : __clone $copie_d_objet = clone $objet; LightPath 2014© - http://www.jmrenouard.fr 36
37.
LightPath 2014© -
http://www.jmrenouard.fr 37
38.
Pas de surcharge
possible des opérateurs A défaut, écrire une fonction de comparaison Les opérateurs classiques ne comparent que l'adresse ou référence. L'état et le type des objets ne comptent pas dans les comparaisons par opérateur LightPath 2014© - http://www.jmrenouard.fr 38
39.
LightPath 2014© -
http://www.jmrenouard.fr 39
40.
Capacité d'introspecter la
définition d'une variable API permettant : ◦Créer des instances ◦Consulter les méthodes des classes ◦Récupérer l'information sur la classe LightPath 2014© - http://www.jmrenouard.fr 40
41.
class Reflection :
classe de base class ReflectionFunction : Introspection de fonction class ReflectionParameter: Introspection de paramètre class ReflectionMethod : Introspection de méthodes class ReflectionClass : Introspection de classe class ReflectionObject: Introspection d'objet class ReflectionProperty : Introspection de propriété class ReflectionExtension : Extension de l'introspection LightPath 2014© - http://www.jmrenouard.fr 41
42.
Connaitre la structure
de la classe ReflexionFunction <?php Reflection::export(new ReflectionClass('ReflexionFunction')); ?> LightPath 2014© - http://www.jmrenouard.fr 42
43.
LightPath 2014© -
http://www.jmrenouard.fr 43
44.
Les objets sont
de type objet :) Typage dynamique est sous jacent au modèle objet Plusieurs types possibles On peut imposer le type dans les fonctions ◦function test_array(array $input); ◦function test_class_A(A $a); LightPath 2014© - http://www.jmrenouard.fr 44
45.
LightPath 2014© -
http://www.jmrenouard.fr 45
46.
Bloc à surveiller
: try { ... } Exception à traiter catch( Exception e) {...} Pas de bloc finally comme en C++ ou Java ◦Bloc Finally uniquement à partir de PHP 5.5 Lancement d'exception : throw new Exception(« message »); LightPath 2014© - http://www.jmrenouard.fr 46
47.
Try { $error
= 'Toujours lancer cette erreur'; throw new Exception($error); // le code suivant une exception n'est pas exécuté. echo 'Jamais exécuté'; }catch (Exception $e) { echo "Capture de l'exception : ", $e->getMessage(), "n"; } LightPath 2014© - http://www.jmrenouard.fr 47
48.
LightPath 2014© -
http://www.jmrenouard.fr 48
49.
Bloc de code
insérable dans une classe Evite la redondance(copier/coller) dans les objets Equivalent d‟un include ou require version objet Uniquement en PHP 5.4 Syntaxe: ◦trait DireBonjour { public function direBonjour() { echo „Bonjour'; } } LightPath 2014© - http://www.jmrenouard.fr 49
50.
Utilisation d‟un trait
dans une classe Mot clé use Exemple: class MaClassePoli { use DireBonjour; function direAdieu() { echo “Adieu”; } } LightPath 2014© - http://www.jmrenouard.fr 50
51.
Documentation du PHP
http://www.php.net/docs LightPath 2014© - http://www.jmrenouard.fr 51
52.
LightPath: ◦Société de
conseil et d‟ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 52
Télécharger maintenant