2016-12-10 3 views
1

Если у меня есть класс, который выглядит примерно такМогу ли я вставлять объекты класса в строки, если класс имеет метод `__toString`?

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; 
    } 
} 

А потом я хочу использовать мой класс, как этот

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

Из выше кода я ожидал бы этот выход

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

Да, просто исправить опечатку в '__toString()' метод: 'возвращение "из ToString: $ MyVar";' -> 'Возвращение«из ToString: $ this- -> myvar ";' –

+0

Мой плохой. В исходном конкатенации кода была точка. Когда я создал вопрос, я случайно написал это неправильно. – sasha199568

+0

Вы проверили свой код? Он должен работать тогда –

ответ

1

Это:

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

Потому что $myvar в объеме __toString функция не определено.

Простой скрипку здесь https://3v4l.org/YFctl

+0

Это определенно будет: https://3v4l.org/YFctl Итак, где же downvoter? –