[PHP] Kommende Neuerungen in PHP 5.5/6

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Murdoc, 27. September 2012 .

Schlagworte:
  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
     
  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
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.