我试图从服务的调用选项执行的方法中获得返回结果。所以My service.xml:
<service id="myService" class="serviceClass">
<argument type="service" id="..."/>
<argument type="service" id="..."/>
<call method="myReturnProblem"/>
</service>
我的服务方法:
function serviceMethod(){
...
$foo = "bar"
var_dump($foo);
return true;
}
My Controller:
function sampleAction(){
...
$this->get('my_Service');
return Response...
}
所以,我可以看到与var_dump的方法像我希望的那样运行,但我不知道我怎么能得到返回真(同样的问题,如果我试图得到$foo或其他什么)。
现在如果我输入:
if($this->('my_Service))
不起作用,因为它不包含结果。为了得到它,我必须输入
if($this->('my_Service')->serviceMethod())
但是它运行了两次serviceMethod。
我想做这样的东西:
if($this->get('my_Service')){}
你知道吗?谢谢。
你所做的叫做Setter注入,参考资料在这里和这里
顾名思义,它用于将一个服务注入到另一个服务中,而不是用于返回值。
要实现结果目的,您应该在服务中创建一个常规方法来处理值,然后返回结果。
public function myMethod()
{
...
$foo = "bar";
var_dump($foo);
return true;
}