#1 27. September 2012 Zuletzt bearbeitet: 27. September 2012 Kommende Neuerungen in PHP 5.5/6 ELSE für Schleifen Die Workarounds haben ein Ende! PHP: for ( $i = 0 ; $i > 0 ; -- $i ) { // wird nie ausgeführt werden } else { print '$i ist doch schon 0!' ;} // nachvollziehbar: $stmt = $dbh -> query ( '...' ); while ( $item = $stmt -> fetch ()) { $item -> awesome ();} else { print 'query gab nichts zurück!' ;} // zu guter letzt: foreach ([] as $item ) { // leerer array ist leer! } else { print 'array war leer!' ;} Finally: finally! Try/Catch wird um Finally erweitert. PHP: function log_access () { static $count = 0 ; try { // könnte eine Exception erzeugen write_to_file (); } catch ( Exception $e ) { // Exception abfangen und verarbeiten print "konnte nicht in datei schreiben!" ; } finally { // egal ob try erfolgreich war oder nicht // dieser code wird IMMER ausgeführt ++ $count ; } return $count ;} Ja, finally wird IMMER ausgeführt! PHP: function say_hello () { try { return true ; } catch ( Excpetion $e ) { } finally { print "hallo welt!" ; }} say_hello (); // gibt "hallo welt" aus und den wert `true` zurück! Generators: PHP: function numbers () { for( $i = 0 ; true ; ++ $i ) yield $i => "wir sind bei $i " ;} foreach ( numbers () as $idx => $msg ) { if ( $idx === 10 ) break; print " $msg \n" ;} Code: wir sind bei 0 wir sind bei 1 wir sind bei 2 wir sind bei 3 [...] Wird aber noch besser: PHP: function skipable_numbers () { for ( $i = 0 ; true ; ++ $i ) if ((yield $i => "wir sind bei $i " ) === 'skip' ) ++ $i ;} $gen = skipable_numbers ();foreach ( $gen as $idx => $msg ) { if ( $idx === 10 ) break; if ( $idx === 5 ) $gen -> send ( 'skip' ); print " $msg \n" ;} Code: wir sind bei 0 wir sind bei 1 wir sind bei 2 wir sind bei 3 wir sind bei 4 wir sind bei 5 wir sind bei 7 // wir haben die 6 übersprungen! wir sind bei 8 [...] IMHO: PHP müsste nun noch den globalen Namensraum aufräumen und restlos ALLE Funktionen entfernen die nichts in der stdlib zu suchen haben. substr() = stdlib array_merge() = stdlib curl_init() != stdlib iconv_get_encoding != stdlib Stattdessen: Code: use PHP\curl; use PHP\iconv; $chh = curl\init(); $enc = iconv\get_encoding(); Im Grunde einfach diese Struktur übernehmen: php-src/ext at master · php/php-src · GitHub + Multi-Zitat Zitieren
#2 30. September 2012 Zuletzt bearbeitet: 30. September 2012 AW: Kommende Neuerungen in PHP 5.5/6 (Endlich) Neue (bessere) Password-Hashing Möglichkeiten: The new Secure Password Hashing API in PHP 5.5 Hier noch ein netter Artikel zum Thema Generatoren (und warum sie nützlich sein können): ircmaxells blog: What Generators Can Do For You Eine kleine "Zusammenfassung" was kommen könnte, findet sich hier: What PHP 5.5 might look like + Multi-Zitat Zitieren