|
Autor |
Nachricht |
boris
Beiträge: 11154
|
Titel: DLW 2008: Understanding the PHP Object-Model
Verfasst am: Sa, 18 Apr 2009, 11:27 |
|
|
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(); } (…) 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 |
|
|
|
ähnliche Beiträge |
|
Thema
| Autor
| Forum
| Antworten
| Verfasst am
|
|
Sie hören gerade..... (2008) |
Frederik |
silikonimplantate |
153 |
Do, 17 Sep 2009, 21:48 |
|
DLW 2008: Advanced Object-Oriented JavaScript |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:21 |
|
DLW 2008: Speaker Panel: Top Speakers from Ruby, Groovy |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:16 |
|
DLW 2008: Metaprogramming with Ruby |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:13 |
|
DLW 2008: Up-2-date: The State of eZ Components |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 11:04 |
Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
|