Benutzername    Passwort    Autologin    
  Passwort vergessen       Registrieren  
beeForum Foren-übersicht » hal9000
Neues Thema eröffnen   Neue Antwort erstellen Hervorhebung entfernen


DLW 2008: Understanding the PHP Object-Model
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
boris



Beiträge: 11154

Titel: DLW 2008: Understanding the PHP Object-Model
Verfasst am: Sa, 18 Apr 2009, 11:27
Beitrag
Antworten mit Zitat

Understanding the PHP Object-Model

Sebastian Bergmann, PHP (Developer PHPUnit)
28.5.2008, 15:20, Raum 1.26

  • Definition(en) / Merkmale von "Objektorientierung" (Benjamin Pierce)
    - Dynamic Dispatch (mapping a message to code)
    - Encapsulation (hiding design decisions)
    - Interface Inheritance (classes share a set of messages they understand)
    - Implementation Inheritance (classes share code)
    - Open Recursion (Zugriff auf "this")

  • PHP 5(.3):
    - Klassen können über "__autoload()" automatisch geladen werden
    - Exception (mittels "try/catch" und "throw new Exception")
    - Spezielle Methoden: __construct(), __destruct() und __clone()
  • Klassen vergleichen und kopieren
    $a = new StdClass; -> neues Objekt
    $b = $a; -> nur Referenz wird kopiert, nicht das Objekt
    $a === $b => true -> $a ist exakt dasselbe wie $b

    $a = new StdClass; -> neues Objekt;
    $b = clone $a; -> Objekt wird kopiert
    $a === $b => false -> $a ist nicht mehr dasselbe wie $b, da unterschiedliche Objekte referenziert werden
  • Eine Klasse kann mehrere Interfaces erben
    PHP-Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php class Vegetable {}

    interface 
    Sellable {
    public function 
    sell();
    }
    (&
    #8230;)
    class Tomato extends Vegetable implements Sellable {
    public function 
    sell /* diese Funktion ist für "Tomato" Pflicht */ );

  • "Interceptors" fangen ungültige Aufrufe und Zuweisungen automatisch ab, so dass im Code darauf reagiert werden kann (und nicht sofort ein Fehler auftritt):
    __get($property): wenn auf eine undefinierte Property zugegriffen wird
    __set($property, $value): wenn eine undefinierte Property gesetzt werden soll
    __isset($property): wenn "isset" auf eine undefinierte Property angewendet wird
    __unset($property): wenn "unset" auf eine undefinierte Property angewendet wird
    __call($method, $arg_array) wenn eine undefinierte Methode aufgerufen wird

Fazit: Ganz gut vorgetragene, fundierte Einführung in das Objekt-Modell in PHP5.
Empfehlung: "Part 2" des u.a. Buches umfasst in etwas denselben Themenkomplex, ist aber naturgemäß um einiges ausführlicher und als Einstieg sehr zu empfehlen (für C#-Entwickler wird nur die Syntax neu sein).


Ressourcen:
http://www.sebastian-bergmann.de

Literatur:
Matt Zandstra: PHP Objects, Patterns, and Practice

Programminfo:
As of version 5 the PHP language features an object model that is similar to the ones of Java and C# and integrates ideas from other programming languages. This talk will give an overview of PHP's object model, covering both basic OOP concepts such as interfaces, classes, and objects as well as PHP's "magic" interceptor methods.


____________
beehave - home of humbug ... [we can't afford to be neutral]

Nach oben
Private Nachricht senden Website dieses Benutzers besuchen Rang:godmode methusalem 3. platz professioneller Sportangler Profi-Winzer (7x Hamm) Arcade-Meister, Rang 16 rainbow-cup
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    beeForum Foren-übersicht » hal9000 Seite 1 von 1
Gehe zu:  



ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Sie hören gerade..... (2008) Frederik silikonimplantate 153 Do, 17 Sep 2009, 21:48 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Advanced Object-Oriented JavaScript boris hal9000 0 Sa, 18 Apr 2009, 11:21 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Speaker Panel: Top Speakers from Ruby, Groovy boris hal9000 0 Sa, 18 Apr 2009, 11:16 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Metaprogramming with Ruby boris hal9000 0 Sa, 18 Apr 2009, 11:13 Letzten Beitrag anzeigen
Keine neuen Beiträge DLW 2008: Up-2-date: The State of eZ Components boris hal9000 0 Sa, 18 Apr 2009, 11:04 Letzten Beitrag anzeigen


Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
phpBB © phpBB Group | impressum