2016-05-02 6 views
0

Я работаю на веб-сайте Symfony. В основном я получил две функции, которая возвращает как JsonResponse:Получить JsonResponse вызываемой функции

public function myFirstFunction() { 
    mySecondFunction(); 
    return new JsonResponse(JsonResponse of mySecondFunction() ????); 
} 

public function mySecondFunction() { 
    return new JsonResponse(array("result" => "ok", "sent" => "yes)); 
} 

Мой вопрос: как можно myFirstFunction() возвращает JsonResponse возвращенное mySecondFunction()?

+0

просто верните вторую функцию. 'return mySecondFunction();' – Junaid

+0

@Junaid Это не будет работать в этом случае. – Marcus

+0

Если ответ разрешил ваш вопрос, пожалуйста, подумайте о его принятии, нажав галочку. Это указывает более широкому сообществу, что вы нашли решение и дали некоторую репутацию как самому, так и самому себе. Если нет, сообщите нам, если мы сможем вам помочь. Благодаря! –

ответ

0

Просто return с $this->, так как вы вызываете method в течение текущего object. Возврат метода процедурный стильreturn mySecondFunction(); не будет работать.

public function myFirstFunction() { 
    return $this->mySecondFunction(); 
    // return new JsonResponse(JsonResponse of mySecondFunction() ????); 
} 

public function mySecondFunction() { 
    return new JsonResponse(array("result" => "ok", "sent" => "yes")); 
} 
0

Вы можете позвонить mySecondFunction непосредственно:

public function myFirstFunction() { 
    return $this->mySecondFunction(); 
} 

Но, может быть, лучше идея создать новый (частный) метод, который создает данные. Это поможет сохранить ваш код DRY:

private function getData() 
{ 
    return array("result" => "ok", "sent" => "yes"); 
} 

public function myFirstFunction() { 
    return new JsonResponse($this->getData()); 
} 

public function mySecondFunction() { 
    return new JsonResponse($this->getData()); 
} 

Если это работает для вас, вы можете легко перемещать бизнес-логику (в данном случае getData()) от контроллера к внешнему классу. Это помогает поддерживать тонкие контроллеры и вашу бизнес-логику в большей степени агностически (что является хорошей практикой IMHO).

Смежные вопросы