DrRobotto: PHP5 Objekte

Hallo,

ich habe folgende frage:

Warum funktioniert bei mir diese Konstrukt nicht, was laut PHP-Dokumentation funktionieren müßte?

$bs = new Bs();
$bs->getBSettings()->getSetting("test_setting");

Der einzige Weg, dieses Konstrukt dann zu übergehen ist dann folgendes:

$bs = new Bs();
$bs = $bs->getBSettings();
$bs->getSetting("test_setting");

Die Klasse schauen folgendermaßen aus

class Bs {
  public function getBSettings() {
    return new BSettings();
  }
}

class BSettings {
  public getSetting($key) {
    return $key;
  }
}

Ich hoffe mir kann jemand helfen, dass der obige Aufruf funktioniert.
Grüße
Dr.

  1. Hallo!

    Warum funktioniert bei mir diese Konstrukt nicht, was laut PHP-Dokumentation funktionieren müßte?

    Welche PHP-Version verwendest Du? Bei mir (5.2.6) funktioniert's nämlich.

    Viele Grüße,
    Christian

    1. Hallo

      Warum funktioniert bei mir diese Konstrukt nicht, was laut PHP-Dokumentation funktionieren müßte?

      Welche PHP-Version verwendest Du? Bei mir (5.2.6) funktioniert's nämlich.

      Ich benutze zZ. 5.2.4. Kann es sein, dass es auf dieser Version noch nicht funktioniert?

      Grüße
      Dr.

      1. Hi!

        Ich benutze zZ. 5.2.4. Kann es sein, dass es auf dieser Version noch nicht funktioniert?

        Ja, kann - hast Du es überprüft?

        Dr.

        Who?

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
      2. Hallo!

        Warum funktioniert bei mir diese Konstrukt nicht, was laut PHP-Dokumentation funktionieren müßte?

        Welche PHP-Version verwendest Du? Bei mir (5.2.6) funktioniert's nämlich.

        Ich benutze zZ. 5.2.4. Kann es sein, dass es auf dieser Version noch nicht funktioniert?

        Zwischen 5.2.4 und 5.2.6 gab's keinerlei derart großen Updates. Allerdings enthält Dein Beispielscript einen einfach zu behebenden Syntaxfehler in der Klassendefinition. Sicher, dass folgendes Script bei Dir in PHP nicht funktioniert? (Das ist Dein Script ohne Syntaxfehler)

        <?php  
        class Bs {  
          public function getBSettings() {  
            return new BSettings();  
          }  
        }  
          
        class BSettings {  
          public function getSetting($key) {  
            return $key;  
          }  
        }  
          
        $bs = new Bs();  
        var_dump($bs->getBSettings()->getSetting("test_setting"));  
        ?>
        

        Viele Grüße,
        Christian

        1. Hallo,

          Allerdings enthält Dein Beispielscript einen einfach zu behebenden Syntaxfehler in der Klassendefinition. Sicher, dass folgendes Script bei Dir in PHP nicht funktioniert? (Das ist Dein Script ohne Syntaxfehler)

          <?php

          class Bs {
            public function getBSettings() {
              return new BSettings();
            }
          }

          class BSettings {
            public function getSetting($key) {
              return $key;
            }
          }

          $bs = new Bs();
          var_dump($bs->getBSettings()->getSetting("test_setting"));
          ?>

            
          Das Script kam nur aus meinem Kopf, welche die Situation widerspiegeln sollte die ich gerade habe. Aber komisch ist, dass es au einmal als ich nach ein paar Tagen wieder nach dem Problem schaute funktionierte!?!  
            
          Danke für eure Hilfe,  
          Grüße  
          Dr
          
          1. Hallo,

            Das Script kam nur aus meinem Kopf, welche die Situation widerspiegeln sollte die ich gerade habe. Aber komisch ist, dass es au einmal als ich nach ein paar Tagen wieder nach dem Problem schaute funktionierte!?!

            Was übrigens nicht funktioniert ist new Foo()->bar (); - vielleicht meintest Du das?

            Viele Grüße,
            Christian

    2. Salvete,

      Welche PHP-Version verwendest Du? Bei mir (5.2.6) funktioniert's nämlich.

      Interessant.. _endlich_ funktioniert das nun!

      MfG,
      Sympatisant

      --
      "Non dura iubeantur, non prohibeantur inpura."