2016-12-10 1 views
1

Wenn ich eine Klasse, dieKann ich Klassenobjekte in Strings einbetten, wenn die Klasse die Methode "__toString" hat?

class MyClass { 
    private $myvar; 

    public function __construct($myvar) { 
     $this->myvar = $myvar; 
    } 

    public function getMyVar() { 
     return $this->myvar; 
    } 

    public function __toString() { 
     return "from toString: " . $this->myvar; 
    } 
} 

sieht so etwas wie dieses Und dann will ich meine Klasse wie dieses

$myclass = new MyClass("myvar value"); 
echo "Embedded class into a string: $myclass"; 

Von oben Code verwenden, würde ich diese Ausgabe erwarten

Embedded class into a string: from toString: myvar value 
+0

Ja, fix nur ein Tippfehler in der '__toString()' Methode: 'return "von toString: $ myvar";' -> 'return„von toString: $ this -> myvar ";' –

+0

Mein schlechtes. In Originalcode war die Verkettung mit Punkt. Als ich die Frage erstellt habe, habe ich sie versehentlich falsch geschrieben. – sasha199568

+0

Haben Sie Ihren Code getestet? Es sollte dann funktionieren –

Antwort

1

Es ist:

public function __toString() { 
    return "from toString: " . $this->myvar; 
} 

Da $myvar im Rahmen der __toString Funktion ist nicht definiert.

Eine einfache Geige ist hier https://3v4l.org/YFctl

+0

Es wird definitiv: https://3v4l.org/YFctl Also, wo ist der Downvoter? –

Verwandte Themen