__toString
метод используется, когда вы хотите получить строковое представление объекта, либо неявно , например, при вызове echo $object
, либо явно , при приведении объекта к строке или объединении его с другой строкой. В вашем коде
$name = new FullName($request->forename, $request->surname);
Вы создаете новый объект FullName
и помещаете его в переменную $name
.
Чтобы увидеть, как работает __toString
, вам нужно привести объект к строке, например:
echo $name;
// or
$str = 'The object as string is: ' . $name;
echo $str;
Также обратите внимание, что var_dump
или print_r
не приводят объект к строке.
Вот простая скрипка .
Идем дальше:
{"id":"1","name":{"forename":"Mike","surname":"Gen"},"message":"The professional has been updated"}
- это JSON . json_encode
не использует приведение к строке.
Вы либо приведете к строке явно :
$returnValues = array(
'id' => $professional->id(),
'name' => (string)$name,
'message' => 'The professional has been updated'
);
Или орудие JsonSerializable
:
final class FullName implements JsonSerializable
{
public function jsonSerialize()
{
return $this->forename . ' ' . $this->surname;
}
После этого кодирование в json будет работать должным образом без явного приведения к строке - fiddle here .