09.02.2016, 17:46
Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2016, 17:52 von Scarabaeus.
Moin Moin
normalerweise setze ich meine Projekte mit Laravel um, aber jetzt steht bei mir auf Arbeit ein Projekt an, für welches Laravel schlicht zu groß / zu umfangreich ist. Für solche Fälle habe ich schon vor geraumer Zeit angefangen mir quasi eine Mikro-Version von Laravel zu basteln (jaja - ich hätte auch gleich ein existierendes Micro-Framework oder Lumen nutzen können
). Gleichzeitig will ich - so zumindest mein Plan - mittels dieses Mikro-Laravels meine Kollegen, die sich beharrlich weigern für Großprojekte ein anständiges PHP-Framework zu nutzen, gewissermaßen auf die sanfte Tour an Laravel ranführen.
Die ganze Geschichte die ich mir zurecht geschrieben habe funktioniert auch wunderbar, nur bräuchte ich an einer Stelle mal andere Meinungen als meine eigene. Konkret geht's um mein Response-Objekt, welches ich mir ab Framework-Start erzeuge. Meine Controller können, je nachdem was in den Methoden steht, entweder ein View-Objekt, ein Response-Objekt, ein Redirect-Objekt oder im ganz simpelstem Fall einen String zurückgeben. Sieht ganz ähnlich wie in Laravel aus:
Diese Rückgabewerte wandern dann in die am Framework-Start erstellte Response-Instanz, die letztlich entscheidet was dem Client zurückgegeben wird und genau zu diesem Schnipsel hätte ich gerne ein paar Meinungen, denn so ganz zufrieden bin ich damit nicht. Nebenbei bemerkt: Es funktioniert alles so wie angedacht. Von daher besteht in der Hinsicht momentan kein Handlungsbedarf. Mir geht's in dem Punkt um die - wie im Titel schon erwähnten - Best Practices in dem Fall.
Grüße
normalerweise setze ich meine Projekte mit Laravel um, aber jetzt steht bei mir auf Arbeit ein Projekt an, für welches Laravel schlicht zu groß / zu umfangreich ist. Für solche Fälle habe ich schon vor geraumer Zeit angefangen mir quasi eine Mikro-Version von Laravel zu basteln (jaja - ich hätte auch gleich ein existierendes Micro-Framework oder Lumen nutzen können

Die ganze Geschichte die ich mir zurecht geschrieben habe funktioniert auch wunderbar, nur bräuchte ich an einer Stelle mal andere Meinungen als meine eigene. Konkret geht's um mein Response-Objekt, welches ich mir ab Framework-Start erzeuge. Meine Controller können, je nachdem was in den Methoden steht, entweder ein View-Objekt, ein Response-Objekt, ein Redirect-Objekt oder im ganz simpelstem Fall einen String zurückgeben. Sieht ganz ähnlich wie in Laravel aus:
PHP-Code:
// Controller gibt ein View-Objekt zurück
return view('test')->with([
'foo' => 'bar'
]);
// Controller gibt ein Response-Objekt zurück
return response()->json([
'foo' => 'bar'
]);
// Controller gibt ein Redirect-Objekt zurück
return redirect('foo')->with([
'bar' => 'barfoo'
]);
// Controller gibt einen String zurück
return 'FooBar';
Diese Rückgabewerte wandern dann in die am Framework-Start erstellte Response-Instanz, die letztlich entscheidet was dem Client zurückgegeben wird und genau zu diesem Schnipsel hätte ich gerne ein paar Meinungen, denn so ganz zufrieden bin ich damit nicht. Nebenbei bemerkt: Es funktioniert alles so wie angedacht. Von daher besteht in der Hinsicht momentan kein Handlungsbedarf. Mir geht's in dem Punkt um die - wie im Titel schon erwähnten - Best Practices in dem Fall.
PHP-Code:
public function __destruct() {
// Wenn Controller ein View-Objekt zurückgegeben hat
if($this->response instanceof View) {
$this->responseContent = $this->response->render();
echo $this->responseContent;
session()->forget('_flashed');
}
// Wenn Controller ein Redirect-Objekt zurückgegeben hat
if($this->response instanceof Redirect) {
header('Location: ' . config('app.url') . '/' . $this->response->getTo());
}
// Wenn Controller ein Response-Objekt zurückgegeben hat
if($this->response instanceof Response) {
header(sprintf('HTTP/%s %s %s', '1.1', $this->httpStatusCode, ''), true, $this->httpStatusCode);
foreach($this->headers as $flag => $value) {
header($flag.':'.$value, true, $this->httpStatusCode);
}
echo $this->responseContent;
session()->forget('_flashed');
}
// Wenn Controller kein Objekt (zb. einen String) zurückgegeben hat
if(!is_object($this->response)) {
echo $this->response;
session()->forget('_flashed');
}
}
Grüße