Php Symfony2-从呼叫服务选项获取返回结果

Php Symfony2-从呼叫服务选项获取返回结果,php,symfony,Php,Symfony,我试图从服务的调用选项执行的方法中获取返回结果。所以 My service.xml: <service id="myService" class="serviceClass"> <argument type="service" id="..."/> <argument type="service" id="..."/> <call method="myReturnProblem"/> </service

我试图从服务的调用选项执行的方法中获取返回结果。所以 My service.xml:

<service id="myService" class="serviceClass">
    <argument type="service" id="..."/>
    <argument type="service" id="..."/>        
    <call method="myReturnProblem"/>
</service>
我的控制器:

function sampleAction(){
    ...
    $this->get('my_Service');
    return Response...
}
因此,通过var_dump,我可以看到该方法正在像我希望的那样运行,但我不知道如何才能获得返回值true(如果我尝试获得$foo或其他什么,同样的问题)

如果我现在做:

if($this->('my_Service))
它不工作,因为它不包含结果。为了得到它,我必须做一些

if($this->('my_Service')->serviceMethod())
但是它运行了两次serviceMethod

我想做一些像:

if($this->get('my_Service')){}

有什么想法吗?谢谢。

您所做的被称为塞特注射,,参考资料和

顾名思义,它是为了将一个服务注入另一个服务,而不是为了返回值

为了达到结果的目的,您应该在服务内创建一个常规方法来处理值,然后返回结果

public function myMethod()
{
    ...
    $foo = "bar";
    var_dump($foo);
    return true;
}

if($this->get('my_Service')->serviceMethod())
typo?对不起,我不知道你的意思是什么,但是如果($this->get('my_Service')->serviceMethod())将执行serviceMethod(调用选项已经执行了),但是在这种情况下返回结果(根据我的示例,这里是真的),感谢您花时间。我尝试在我的服务构造函数中处理并添加范围,但它返回与setter注入相同的结果(不是我希望的结果,而是服务对象)。关于常规方法,我必须在控制器中调用它才能得到结果。我在想一个办法,只要打电话给服务部就可以了。啊,你说得对。我认为使用scope
prototype
的服务将像创建一个新的对象实例一样工作。我更新了我的答案,删除了那个部分。我认为除了调用常规方法外,没有其他方法。
public function myMethod()
{
    ...
    $foo = "bar";
    var_dump($foo);
    return true;
}