Я пытаюсь получить результат возврата из метода, выполняемого опцией вызова службы. Итак, 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;
}
Мой контроллер:
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')){}
Есть идеи? Благодарю.
То, что вы сделали, называется Setter Injection, ссылки доступны здесь и здесь
Как следует из названия, он предназначен для ввода услуги в другую службу, а не для возврата значения.
Чтобы достичь цели результата, вы должны создать регулярный метод внутри службы для обработки значений и затем вернуть результат.
public function myMethod()
{
...
$foo = "bar";
var_dump($foo);
return true;
}
prototype
будет работать так же, как создание нового экземпляра объекта. Я обновил свой ответ, удалив эту часть. Я думаю, что нет другого пути, кроме как вызвать обычный метод.
if($this->get('my_Service')->serviceMethod())
опечатка?