我的类中有一个返回JSON响应的方法。
public function response(){
return \Response::json(['data'=>'somedata']);
}
为了能够使用更多链式方法,每当我想要将对象作为响应返回时,我想使用__toString()方法。像这样:
public function __toString(){
return $this->response();
}
但是我收到了这个错误:
Method MyClass::__toString() must return a string value
哪个有意义,但我该怎么做呢。我查看了Laravel和Symfony JsonResponse
类,无法找到解决此问题的方法。我尝试了getContent()
,但这只是一个字符串而不是正确的Json响应。
答案 0 :(得分:0)
经过大量研究后,我找到了解决方案。我不知道它是否是最好的,但它是:
public function __toString(){
$this->response()->send();
return '';
}
这实际上是对Symfony\Component\HttpFoundation\Response::send()
方法的调用,而不是返回字符串。
答案 1 :(得分:0)
Thyis是一个较晚的响应,但是我找到了一个更好的解决方案,让Laravel处理响应:
public function __toString(){
return Response::json($this)->content() ' Returns a string
}