SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
Jean-Marie Renouard 
LightPath 2014©
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
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
Constantes de classe 
Abstraction de classes 
Interfaces 
Surcharge 
Parcours d'objets 
Masques 
Méthodes magiques LightPath 2014© - http://www.jmrenouard.fr 
4
Mot-clé "final" 
Clonage d'objets 
Comparaison d'objets 
Réflexion 
Typage objet 
Les exceptions 
Les traits 
LightPath 2014© - http://www.jmrenouard.fr 
5
LightPath 2014© - http://www.jmrenouard.fr 
6
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
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
LightPath 2014© - http://www.jmrenouard.fr 
9
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
LightPath 2014© - http://www.jmrenouard.fr 
11
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
class A { 
function __construct() { 
print "A la construction de l'objet de type classe An"; 
} 
} 
LightPath 2014© - http://www.jmrenouard.fr 
13
class A { 
function __destruct() { 
print "A la destruction de l'objet de type classe An"; 
} 
} 
LightPath 2014© - http://www.jmrenouard.fr 
14
LightPath 2014© - http://www.jmrenouard.fr 
15
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
LightPath 2014© - http://www.jmrenouard.fr 
17
LightPath 2014© - http://www.jmrenouard.fr 
18
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
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
LightPath 2014© - http://www.jmrenouard.fr 
21
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
Variable dont la valeur est immuable 
◦const constant = 'valeur constante'; 
LightPath 2014© - http://www.jmrenouard.fr 
23
LightPath 2014© - http://www.jmrenouard.fr 
24
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
LightPath 2014© - http://www.jmrenouard.fr 
26
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
LightPath 2014© - http://www.jmrenouard.fr 
28
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
$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
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
__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
LightPath 2014© - http://www.jmrenouard.fr 
33
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
LightPath 2014© - http://www.jmrenouard.fr 
35
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
LightPath 2014© - http://www.jmrenouard.fr 
37
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
LightPath 2014© - http://www.jmrenouard.fr 
39
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
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
Connaitre la structure de la classe ReflexionFunction 
<?php 
Reflection::export(new ReflectionClass('ReflexionFunction')); 
?> 
LightPath 2014© - http://www.jmrenouard.fr 
42
LightPath 2014© - http://www.jmrenouard.fr 
43
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
LightPath 2014© - http://www.jmrenouard.fr 
45
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
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
LightPath 2014© - http://www.jmrenouard.fr 
48
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
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
Documentation du PHP 
http://www.php.net/docs 
LightPath 2014© - http://www.jmrenouard.fr 
51
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

Más contenido relacionado

La actualidad más candente

Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHPJean-Marie Renouard
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POOmazenovi
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !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 1Bases de PHP - Partie 1
Bases de PHP - Partie 1Régis Lutter
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en gokader15
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Formation PHP
Formation PHPFormation PHP
Formation PHPkemenaran
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 

La actualidad más candente (19)

Email et PHP5
Email et PHP5Email et PHP5
Email et PHP5
 
MVC / Frameworks PHP
MVC / Frameworks PHPMVC / Frameworks PHP
MVC / Frameworks PHP
 
Les structures de données PHP5
Les structures de données PHP5Les structures de données PHP5
Les structures de données PHP5
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
Javascript et JQuery
Javascript et JQueryJavascript et JQuery
Javascript et JQuery
 
Le client FTP de PHP5
Le client FTP de PHP5Le client FTP de PHP5
Le client FTP de PHP5
 
Présentation de PHP
Présentation de PHPPrésentation de PHP
Présentation de PHP
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
PHP5 - POO
PHP5 - POOPHP5 - POO
PHP5 - POO
 
Open close principle, on a dit étendre, pas extends !
Open close principle, on a dit étendre, pas extends !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 1Bases de PHP - Partie 1
Bases de PHP - Partie 1
 
Php & My Sql
Php & My SqlPhp & My Sql
Php & My Sql
 
Pratique de la programmation en go
Pratique de la programmation en goPratique de la programmation en go
Pratique de la programmation en go
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Cours php
Cours phpCours php
Cours php
 
Formation PHP
Formation PHPFormation PHP
Formation PHP
 
Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 

Destacado

Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxJean-Marie Renouard
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaMehdi EL KRARI
 
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.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
 

Destacado (7)

Manuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur LinuxManuel de sécurisation d'un serveur Linux
Manuel de sécurisation d'un serveur Linux
 
Ssh cookbook
Ssh cookbookSsh cookbook
Ssh cookbook
 
Structure de données en PHP
Structure de données en PHPStructure de données en PHP
Structure de données en PHP
 
PHP 5 pour les développeurs Java
PHP 5 pour les développeurs JavaPHP 5 pour les développeurs Java
PHP 5 pour les développeurs Java
 
Présentation de Node.js
Présentation de Node.jsPré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...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.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 

Similar a PHP 5 et la programmation objet

Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : de la théorie à la pratique
Traits : de la théorie à la pratiqueFrederic 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 !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 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHPjulien pauli
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflectionEric Toguem
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdfssuserc46a93
 
Cours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPCours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPBassim ELKHATTABY
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afupJulien Vinber
 
Comment relire du code pourri sans se fatiguer
Comment relire du code pourri sans se fatiguerComment relire du code pourri sans se fatiguer
Comment relire du code pourri sans se fatiguerDamien Seguy
 
Annotations pour les Geeks
Annotations pour les GeeksAnnotations pour les Geeks
Annotations pour les Geeksjviet
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3Eddy RICHARD
 
Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech daysJean-Pierre Vincent
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAAymen Bedwivski
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaAmel Morchdi
 

Similar a PHP 5 et la programmation objet (20)

Traits : de la théorie à la pratique
Traits : de la théorie à la pratiqueTraits : 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 !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 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
Patterns and OOP in PHP
Patterns and OOP in PHPPatterns and OOP in PHP
Patterns and OOP in PHP
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-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 PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflection
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
test doc
test doctest doc
test doc
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
 
Cours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHPCours Programmation web en PHP Cours Programmation web en PHP
Cours Programmation web en PHP Cours Programmation web en PHP
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 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 fatiguerComment relire du code pourri sans se fatiguer
Comment relire du code pourri sans se fatiguer
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Annotations pour les Geeks
Annotations pour les GeeksAnnotations pour les Geeks
Annotations pour les Geeks
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
 
Function oop - bonnes pratiques ms tech days
Function   oop - bonnes pratiques ms tech daysFunction   oop - bonnes pratiques ms tech days
Function oop - bonnes pratiques ms tech days
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 

Último

BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresidelewebmestre
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...idelewebmestre
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresidelewebmestre
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineidelewebmestre
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueidelewebmestre
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvreidelewebmestre
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsidelewebmestre
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesangevaleryn
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileMBouderbala
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairidelewebmestre
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinidelewebmestre
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogneidelewebmestre
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...idelewebmestre
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en Franceidelewebmestre
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleuridelewebmestre
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLidelewebmestre
 

Último (20)

BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitièresBOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
BOW 2024 -3-7- Impact bâtiment stress thermique Vaches laitières
 
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
BOW 2024 - 3-8 - Adaptation des bâtiments d'élevages de volailles au changeme...
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniques
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huile
 
BOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chairBOW 2024 - Jardins d'hiver en poulets de chair
BOW 2024 - Jardins d'hiver en poulets de chair
 
BOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcinBOW 2024 - Le bâtiment multicritère porcin
BOW 2024 - Le bâtiment multicritère porcin
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogne
 
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en France
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 

PHP 5 et la programmation objet

  • 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