PHP 5.4Die wichtigsten Neuerungen im Überblick               @ManuelKiessling
SHORT ARRAY SYNTAX$a = array(‘a‘, ‘b‘, ‘c‘);$a = [‘a‘, ‘b‘, ‘c‘];$a = [one => 1, two => 2];
FUNCTION ARRAY DEREFERENCING function foo() {   return array(1, 2, 3); } echo foo()[2]; // prints 3
CLASS MEMBER ACCESS ON      INSTANTIATIONclass Foo {    public function bar() {    echo ‘foobar’;  }}(new Foo)->bar(); // ...
TRAITS“The best way to understand what traits areand how to use them is to look at them for whatthey essentially are: lang...
TRAITSUnterschiedlich Klassen implementieren unterschiedliches Verhalten – aber es gibt einige   Aspekte, die in praktisch...
TRAITSclass User {    public function login() {         //...         $this->logger->log(‘login’, $user->name, time());   ...
TRAITS Unterschiedlich Klassen implementieren unterschiedlichesVerhalten – aber es gibt einige Aspekte, die in praktisch a...
TRAITS  Was, wenn das logger Objekt ab sofort den  Zeitstempel als ersten Parameter erwartet?Wie verhindern wir, dass wir ...
TRAITSVariante 1: Gemeinsame Vererbung                                 log()                LoggableObject       User     ...
TRAITSclass LoggableObject {  public function log(event, identifier, timestamp) {    $this->logger->log(event, identifier,...
TRAITSWas, wenn wir einen zweiten Aspekt haben?                   User               Item    Verhalten:   login()         ...
TRAITSVariante 1: Mehrfachvererbung                     log()                      profile()   LoggableObject            P...
TRAITSVariante 1: Mehrfachvererbung                     log()                      profile()   LoggableObject            P...
TRAITS         Variante 2: Traits     User                       Item   $this->log()               $this->log()   use     ...
TRAITStrait Logger {  public function log(event, identifier, timestamp) {...}}trait Profiler {  public function profile() ...
Danke. Fragen?    @ManuelKiessling
Upcoming SlideShare
Loading in …5
×

PHP 5.4: Die wichtigsten Neuerungen im Überblick

3,259 views

Published on

Die wichtigsten Neuerungen von PHP 5.4, insbesondere Traits, werden vorgestellt.

Ein Videostream zu diesem Talk ist unter http://www.ustream.tv/recorded/21104071/highlight/251550 zu sehen.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

PHP 5.4: Die wichtigsten Neuerungen im Überblick

  1. 1. PHP 5.4Die wichtigsten Neuerungen im Überblick @ManuelKiessling
  2. 2. SHORT ARRAY SYNTAX$a = array(‘a‘, ‘b‘, ‘c‘);$a = [‘a‘, ‘b‘, ‘c‘];$a = [one => 1, two => 2];
  3. 3. FUNCTION ARRAY DEREFERENCING function foo() { return array(1, 2, 3); } echo foo()[2]; // prints 3
  4. 4. CLASS MEMBER ACCESS ON INSTANTIATIONclass Foo { public function bar() { echo ‘foobar’; }}(new Foo)->bar(); // foobar
  5. 5. TRAITS“The best way to understand what traits areand how to use them is to look at them for whatthey essentially are: language assisted copy andpaste.If you can copy and paste the code from oneclass to another then you have a candidate for atrait.”
  6. 6. TRAITSUnterschiedlich Klassen implementieren unterschiedliches Verhalten – aber es gibt einige Aspekte, die in praktisch allen Klassen eines Systems implementiert werden sollen. User Item Verhalten: login() order() buy() ship() pay() changeColor() Aspekt: logging logging
  7. 7. TRAITSclass User { public function login() { //... $this->logger->log(‘login’, $user->name, time()); }}class Item { public function ship() { //... $this->logger->log(‘shipped’, $item->id, time()); }}
  8. 8. TRAITS Unterschiedlich Klassen implementieren unterschiedlichesVerhalten – aber es gibt einige Aspekte, die in praktisch allen Klassen eines Systems implementiert werden sollen. User Item Verhalten: login() order() buy() ship() pay() changeColor() Aspekt: logging logging
  9. 9. TRAITS Was, wenn das logger Objekt ab sofort den Zeitstempel als ersten Parameter erwartet?Wie verhindern wir, dass wir in allen Klassen, die den Logger verwenden, den Code anpassen müssen?
  10. 10. TRAITSVariante 1: Gemeinsame Vererbung log() LoggableObject User Item $this->log() $this->log()
  11. 11. TRAITSclass LoggableObject { public function log(event, identifier, timestamp) { $this->logger->log(event, identifier, timestamp); }}class User extends LoggableObject { public function login() { //... $this->log(‘login’, $user->name, time()); }}Class Item extends LoggableObject { public function ship() { //... $this->log(‘login’, $item->id, time()); }}
  12. 12. TRAITSWas, wenn wir einen zweiten Aspekt haben? User Item Verhalten: login() order() buy() ship() pay() changeColor() Aspekt: logging logging profiling profiling
  13. 13. TRAITSVariante 1: Mehrfachvererbung log() profile() LoggableObject ProfilableObject User Item $this->log() $this->log()
  14. 14. TRAITSVariante 1: Mehrfachvererbung log() profile() LoggableObject ProfilableObject User Item $this->log() $this->log()
  15. 15. TRAITS Variante 2: Traits User Item $this->log() $this->log() use use use use log() profile()LoggerTrait ProfilingTrait
  16. 16. TRAITStrait Logger { public function log(event, identifier, timestamp) {...}}trait Profiler { public function profile() {...}}class User { use Logger, Profiler; public function login() { $this->log(‘login’, $user->name, time()); $this->profile(...); }}Class Item { use Logger, Profiler; public function ship() { $this->log(‘login’, $item->id, time()); $this->profile(...); }}
  17. 17. Danke. Fragen? @ManuelKiessling

×