2016-05-02 8 views
0

Ich arbeite an einer Symfony-Website. Im Grunde habe ich zwei Funktionen, die beide zurück JsonResponse:Get JsonResponse einer aufgerufenen Funktion

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

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

Meine Frage ist: Wie kann myFirstFunction() geben die JsonResponse von mySecondFunction() zurückgegeben wird?

+0

geben Sie einfach die zweite Funktion zurück. 'return mySecondFunction();' – Junaid

+0

@Junaid Das wird in diesem Fall nicht funktionieren. – Marcus

+0

Wenn eine Antwort Ihre Frage gelöst hat, können Sie sie durch Anklicken des Häkchens akzeptieren. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Wenn nicht, lass es uns wissen, wenn wir dir weiter helfen können. Vielen Dank! –

Antwort

0

einfach return es mit $this-> da Sie eine method innerhalb des aktuellen object aufrufen. Rückgabe der Methode prozeduralen Stilreturn mySecondFunction(); wird nicht funktionieren.

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

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

können Sie mySecondFunction direkt anrufen:

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

Aber vielleicht ist es besser, Idee, eine neue (privat) Methode zu erstellen, die die Daten erstellt. Es wird Ihnen helfen, Ihren Code zu halten 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()); 
} 

Wenn dies für Sie arbeitet, können Sie einfach Ihre Geschäftslogik von dem Controller an eine externe Klasse (getData() in diesem Fall) bewegen kann. Das hilft, Ihre Controller schlank zu halten und Ihre Geschäftslogik mehr Framework Agnostic (was eine gute Praxis IMHO ist).