2017-12-18 2 views
2

Tor: verstehen, ob diese umgesetzt Ordnung/Logik des Betriebes gehört in die Tat zu dem C Teil von MV C.php/oop/mvc Reihenfolge des Betriebes mit Abschlag Dateien (kein db)

Situation: Ich habe fast fertig, eine einfache Notiz-Website mit Abschlags-Dateien. Außer der Authentifizierung wird keine Datenbank verwendet. Das Fehlen einer Datenbank macht es jedoch schwierig zu wissen, ob ich den VC vernachlässige.

Da ich die Erweiterung .md nicht als Teil der hübschen URL haben wollte, bin ich stark auf den PageController angewiesen, um die Reihenfolge der Operation zu regeln.

Vom Controller erbt PageController das konstruierte Dateisystem/Flysystem (fs), Zweig und die "$ app", die eines der drei Szenarien verarbeitet.

Es prüft zuerst, ob ein param.md existiert und ob param ein Verzeichnis ist. Wenn keine der oben genannten, dann ist es eine neue Notiz. In jedem Fall wird eine entsprechende Methode von der Anwendung ($ app) verwendet, die ein Array verarbeitet und zurückgibt (Titel, Breadcrumbs, Inhalt/Verzeichnisliste, neue Vorlage usw.).

<?php 
namespace App\Controller; 
class PageController extends Controller { 

public function Page($param){ 
    $file=$param.'.md'; 
    if ($this->fs->has($file)) { 
    $data=$this->app->setNote($file); 
    return $this->app->render('note.twig',$data) 
    } 
    elseif ($this->fs->has($param)) { 
    $data=$this->app->setFolder($param); 
    return $this->app->render('folder.twig',$data) 
    } 
    else { 
    $data=$this->app->setNew($param); 
    return $this->app->render('new.twig',$data) 
    } 
} 
} 

Per "PHP the Right Way":

Controller übernehmen die Anforderung Prozess zurück die Daten von Modellen und laden Ansichten in der Antwort zu senden.

Obwohl mein Code und bekommt den Job zu erledigen funktioniert, ist es nicht auf die Art und Weise Recht haben scheint, weil der Haupt-App die Verarbeitung tut. Ich denke, ich könnte einfach die Application.php in den Models-Ordner verschieben, aber würde das den "richtigen Weg" beibehalten? Soll ich eine Middleware verwenden, bevor der PageController funktioniert?

Es mag albern erscheinen, nach einem Code zu fragen, der einfach funktioniert, aber mein Ziel ist es, die aktuellen Weisheiten im Umgang mit Flatfiles besser zu verstehen/zu lernen.

+0

Kurzer Hinweis: Ich verwende kein (Mikro-) Framework, um mich dazu zu zwingen, jedes der PHP-Cogs zu verstehen. – Farhang

Antwort

-1

Unabhängig davon, ob Sie datenbankfrei sind, werden die Daten in den Dateien .md gespeichert/zugegriffen.

Zugriff auf sie sollte zu einem Modell abstrahiert werden. Sie sollten eine File.find Objekt + Methode und/oder eine File.find_or_create erstellen. Dann

$file = File.find_or_create($param); 
$render_type = $file.type . '.twig'; 
return $this->app->render($render_type, $file.data); 

Setzen Sie alle Ihre if Logik in das Modell.

Verwandte Themen