PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.

Slides:



Advertisements
Présentations similaires
PHP5 its a kind of magic. Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le.
Advertisements

IChannelIPrivilegedIMultithreadedIServantICacheableIMimeResponse Type custom : les interfaces de programmations IChannel : canal standard, stateful 5 méthodes.
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
C++ 6ème cours Patrick Reuter maître de conférences
C++ 5ème cours Patrick Reuter maître de conférences
Séparation des préoccupations (c) 2004, Audrey Occello, LF8 MOC Seconde partie Un exemple de programmation orientée Aspect avec AspectJ.
1 Tableaux des objets C++ si on connaît le nombre dobjets nécessaires davance on peut utiliser des tableau dobjets dans les fonctions dusage class Personne.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
PHP5 poo.
Symfony Formulaires.
Jérôme CUTRONA PHP objet Jérôme CUTRONA 01:08:01 Programmation Web
11:37:32 Programmation Web PHP5 objet "avancé" Jérôme CUTRONA
Bases de données Objet singleton pour la connexion
PHP Interface base de données
Chapitre IV Object, interfaces, classes imbriquées.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Faculté I&C, Claude Petitpierre, André Maurer Bases de données Javascript – SQL - LemanOS.
Le langage PHP 5.
Cours n°3 Les formulaires
Javascript les spécificités du langage - Partie 3 -
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Langage Oriente Objet Cours 4.
Cours du 19 octobre. POO-L3 H. Fauconnier2 E) Constructeurs et héritage Le constructeurs ne sont pas des méthodes comme les autres: le redéfinition na.
Objets Javascript Mécanismes internes Le concept et la construction dobjets
Bibliothèque de fonctions PHP
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quelques notes sur CORBA F. Boyer, Oct Principes Programmation distribuée Multi-plateformes Notion de client et de serveur Notion de stub et de.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Introduction à la programmation II Veronica Diego Mercredi 13 avril 2005.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
PHP GTK PHP…au delà du Web Paris, 28 novembre 2001 Armel FAUVEAU GLOBALIS media systems.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Multi-Thread Jian-Yun Nie
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Javascript les spécificités du langage - Partie 5 -
JavaScript Nécessaire Web.
Packages et Types De la Spécification Formelle A l'implémentation Ada.
La notion de type revisitée en POO
ESA Ecole Supérieure des Affaires Ernaelsten Gérard - Frédéric FiléePage 285 Cours de Programmation Web : PHP Chapitre 5 : Orienté objet en PHP.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Résumé des concepts liés aux objets C. Petitpierre, EPFL.
PHP 7° PARTIE : PROGRAMMATION OBJET
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
Réaliser par: Sadok Amel Cheboui hassiba
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les surcharges d'opérateurs
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
PHP5 objet "avancé" Jérôme CUTRONA 09:56:48 Programmation Web
Protocole HTTP, cookies, sessions, authentification
Bases de données Singleton pour la connexion
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
Name of presentation Company name.
Jérôme CUTRONA PHP5 objet "avancé" Jérôme CUTRONA 03:07:13 Programmation Web
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Bases de données Singleton pour la connexion
Transcription de la présentation:

PHP5 its a kind of magic

Chargement automatique function __autoload( $nom_classe ) { require_once('obj/'.$nom_classe.'.class.php'); } si on exécute le code $v = new voiture(); –le fichier obj/voiture.class.php sera automatiquement chargé

Constructeur / destructeur class voiture { public $marque; function __construct($marque) { $this->marque = $marque; } } $MaVoiture = new voiture('ferrari'); echo $MaVoiture->marque; // affiche ferrari De manière équivalente __destruct() regroupe toutes les actions à exécuter lors de la destruction dun objet

__call appelée automatiquement si l' on tente d'utiliser une méthode inexistante ne permet pas de gérer les appels statiques vers des méthodes inexistantes class MaClasse { function __call($name, $arguments) { echo 'Vous tentez d appeler la méthode.$name; } } $O = new MaClasse; echo $O -> coucou(); // affichera : Vous tentez d appeler la méthode coucou

__callStatic appelée automatiquement si l' on tente d'utiliser une méthode statique inexistante (depuis php5.3) class MaClasse { function __callStatic($name, $arguments) { echo 'Vous tentez d appeler la méthode.$name; } } MaClasse::coucou(); // affichera : Vous tentez d appeler la méthode coucou

__get appelé automatiquement si l'on tente d' utiliser un attribut inexistant class MaClasse { function __get($name) { echo 'Vous tentez d\'appeler l\attribut ', $name; } $O = new MaClasse; echo $O -> coucou; // affichera : Vous tentez d'appeler lattribut coucou

__set appelé automatiquement si l'on tente d'assigner une valeur à un attribut inexistant class MaClasse { function __set($name, $value) { echo 'Vous tentez d\'assigner ', $value, ' dans ', $name; } $O = new MaClasse; $O -> coucou = 'plouf'; // affichera : Vous tentez d assigner plouf dans coucou

__toString détermine comment la classe doit réagir lorsqu'elle est convertie en chaîne de caractères class MaClasse { function __toString() { return cet objet est un objet MaClasse; } $O = new MaClasse; echo $O; // affichera : cet objet est un objet MaClasse

__isset appelé pour déterminer si un attribut est défini class magicmethod { function __isset($variablename) { echo "Variable '".$variablename."' not Set"; } $a = new magicmethod(); isset($a->name); //affichera : Variable name not Set

__unset appelé pour effacer un attribut class magicmethod { function __unset($variablename) { echo "Variable '".$variablename."' not Set and Cannot be UnSet"; } $a = new magicmethod(); unset($a->name); //affichera: Variable name not Set and Cannot be UnSet

__sleep appelé lors de la sérialisation dun objet class magicmethod { private $setName; function __sleep() { echo "Performing Operation Before Serializing Data "; return array(setName); } $a = new magicmethod(); $a->setName = "Hello World!!!"; $serializedata = serialize($a); //affichera: Performing Operation Before Serializing Data

__wakeup appelé lors de la déssérialisation dun objet class magicmethod { private $setName; function __wakeup() { echo "Performing Operation Before Unserializing Data "; echo $this->setName; } $a = new magicmethod(); $a->setName = "Hello World!!!"; $serializedata = serialize($a); $serializedata1 = unserialize($serializedata); //affichera: Performing Operation Before Unserializing Data //Hello World !!

__clone appelé lors du clonage dun objet class Animal { public $legs; public $name; function __clone() { echo "Object Cloning in Progress"; } $tiger = new Animal(); $tiger->name = "Tiger"; $tiger->legs = 4; $kangaroo = clone $tiger; $kangaroo->name = "Kangaroo"; $kangaroo->legs = 2; //affichera: Object Cloning in Progress

get_called_class() <?php class foo { static public function test() { var_dump(get_called_class()); } } class bar extends foo {} foo::test(); //foo bar::test(); //bar

class Singleton { function &getInstance() { static $instance; if(!$instance) { $instance = new Singleton(); } return $instance; } $obj = & singleton::getInstance(); Singleton en PHP 4 La classe est toujours instanciable

Singleton en PHP 5 class Singleton { static private $instance; private function __construct(){} public static function getInstance() { if (null === self::$instance)) { self::$instance = new self(); } return self::$instance; } final public function __clone() { trigger_error('Le clônage n\'est pas autorisé.', E_USER_ERROR); } } $obj = Singleton::getInstance(); Ne pas oublier la méthode __clone()

Singleton en PHP 5.3 part I abstract class Singleton { private static $instances = array(); final private function __construct() { if(isset(self::$instances[get_called_class()])) { Throw new Exception('instance of '.get_called_class().' already exists'); } self::initialize(); } Protected function intialize(){}

Singleton en PHP 5.3 part II final public static function getInstance() { $class = get_called_class(); if(!isset(self::$instances[$class])) { self::$instances[$class] = new static(); } return self::$instances[$class]; } final private function __clone(){} }

Utilisation de la classe singleton Class Foo extends Singleton {} Class Bar extends Singleton {} $a = Foo::getInstance(); $b = Foo::getInstance();

Les dépendances dinjection contre-exemple Cest une IoC, inversion de contrôle Class User { protected $storage; function __construct() { $this->storage = new SessionStorage(); } function setLanguage($language) { $this->storage->set(language } $user = new User(); Difficile de changer la classe de stockage Simple à utiliser

Les dépendances dinjection exemple Class User { protected $storage; function __construct($storage) { $this->storage = $storage; } $storage = new SessionStorage $user = new User($storage); Très simple à personnaliser Légèrement plus compliqué à utiliser

design Patterns en PHP patternrevisitedphp53 Slide 7 Singleton Slide 13 Active Record Slide 20 The Obesrever Pattern Slide 42 Template view Slide 46 Dependecy Injection Slide 80 Anonymous Functions / Closures … #mustread ;)