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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?
    Last edited by UlfDunkel; 23-08-2016, 16: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;

    Last edited by h3ll; 23-08-2016, 16:24.

    Comment


    • #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.

      Comment


      • #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

        Comment


        • #5
          Originally posted by UlfDunkel View Post
          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.

          Originally posted by UlfDunkel View Post
          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(); 
          Originally posted by UlfDunkel View Post
          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.

          Comment


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

            Comment


            • #7
              Originally posted by UlfDunkel View Post
              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.

              Comment


              • #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

                Comment


                • #9
                  Originally posted by UlfDunkel View Post
                  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.

                  Comment

                  Working...
                  X