Variable Variablen funktionieren in PHP 7 nicht mehr wie in PHP 5

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variable Variablen funktionieren in PHP 7 nicht mehr wie in PHP 5

    Liebe Leute,
    ich habe mich schon dusselig gesucht, aber keine elegante Lösung für folgendes Problem gefunden.

    PHP-Code:
    class Product
    {
       var 
    $name;
       [...]
    }

    $ProductA = new Product;
    $ProductA->name "Kaffee";
    $ProductB = new Product;
    $ProductB->name "Tee";

    $products = array("ProductA","ProductB");

    for (
    $i 0$i count($products); $i++)
    {
       echo $
    $products[$i]->name;

    In PHP 5.x funktionierte das prima, in PHP 7 bekomme ich einen Fehler in der echo-Zeile gemeldet.

    Mein Workaround für PHP 7 bisher:
    PHP-Code:
    for ($i 0$i count($products); $i++)
    {
       
    $pname $products[$i];
       echo $
    $pname->name;

    Geht das auch eleganter?
    Zuletzt geändert von UlfDunkel; 23.08.2016, 17:20.
    PHP Version 7.0.8-0ubuntu0.16.04.2

  • #2
    Variable Variablen sollten generell nicht verwendet werden. Das führt nur zu Müllcode.

    Und "var" stammt noch von PHP 4. Wo hast du den prehistorischen Code her?

    PHP-Code:
    class Product {
        public 
    $name;
    }

    $products = array();
    $products[0] = new Product();
    $products[0]->name 'Kaffee';
    $products[1] = new Product();
    $products[1]->name 'Tee';

    foreach (
    $products as $product) {
        echo 
    $product->name;

    Zuletzt geändert von h3ll; 23.08.2016, 17:24.

    Kommentar


    • #3
      Variable Variablen an sich waren immer schon eine Art „Workaround“ – für Sachen, die man vernünftig von vornherein anders hätte implementieren sollen/müssen.

      Wenn du es jetzt eh überarbeiten musst, dann mach’s am besten auch gleich vernünftig – ohne variable Variablen. (Wie genau das im konkreten Fall aussehen könnte, kann ich dir nicht sagen, dazu ist das Beispiel zu unaussagekräftig.)
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Naja, Leute, wenn etwas in einer Sprache machbar ist, wird es auch gemacht, oder? Und die Organisation der Produkte in meinem Beispiel ist über sprechende Produktnamen wie "ProductA", "ProductB" (die natürlich total anders heißen), viel leichter zu organisieren.

        Es scheint, als habe ich jetzt durch weiteres Probieren schon selbst den wohl elegantesten Weg für PHP 7 gefunden:

        PHP-Code:
        for ($i 0$i count($products); $i++)
        {
           echo ${
        $products[$i]}->name;

        Für den Hinweis auf "var" bedanke ich mich ebenso wie für eure Vorschläge.
        PHP Version 7.0.8-0ubuntu0.16.04.2

        Kommentar


        • #5
          Zitat von UlfDunkel Beitrag anzeigen
          Naja, Leute, wenn etwas in einer Sprache machbar ist, wird es auch gemacht, oder?
          Nein. Man kann auch mit der deutschen Sprache viel Müll schreiben. Man muss es nicht machen, nur weil es möglich ist.

          Zitat von UlfDunkel Beitrag anzeigen
          Und die Organisation der Produkte in meinem Beispiel ist über sprechende Produktnamen wie "ProductA", "ProductB" (die natürlich total anders heißen), viel leichter zu organisieren.
          PHP-Code:
          $products['ProductA'] = new Product(); 
          Zitat von UlfDunkel Beitrag anzeigen
          Es scheint, als habe ich jetzt durch weiteres Probieren schon selbst den wohl elegantesten Weg für PHP 7 gefunden:

          PHP-Code:
          for ($i 0$i count($products); $i++)
          {
             echo ${
          $products[$i]}->name;

          Das ist das Gegenteil von elegant. Ziemlich furchtbar und umständlich.

          Kommentar


          • #6
            Guckst Du hier.
            PHP Version 7.0.8-0ubuntu0.16.04.2

            Kommentar


            • #7
              Zitat von UlfDunkel Beitrag anzeigen
              Ich kenn das PHP-Handbuch sicher mehr als du. Und trotzdem ändert das nichts an meiner Aussage. Entweder du profitierst aus der Erfahrung anderer Entwickler oder du bleibst stur bei deiner Einstellung und lernst selber schmerzhaft aus deinen Fehlern.

              Kommentar


              • #8
                Oh, ich wusste nicht, dass es hier üblich ist, Leute, die ne Frage stellen, pauschal erstmal für doof zu halten. Seit wann ich entwickle und programmiere und was ich gelesen habe, sagt Dir sicher Deine gläserne Kugel.

                Dennoch schönen Dank. Have a nice day.
                PHP Version 7.0.8-0ubuntu0.16.04.2

                Kommentar


                • #9
                  Zitat von UlfDunkel Beitrag anzeigen
                  Oh, ich wusste nicht, dass es hier üblich ist, Leute, die ne Frage stellen, pauschal erstmal für doof zu halten. Seit wann ich entwickle und programmiere und was ich gelesen habe, sagt Dir sicher Deine gläserne Kugel.

                  Dennoch schönen Dank. Have a nice day.
                  Wenn du nicht für einen Anfänger gehalten werden willst, solltest du keine Anfängerfehler machen.

                  Kommentar

                  Lädt...
                  X