YAMF (ein weiteres MVC -Framework) ist ein kleines PHP -MVC -Framework, mit dem Sie das MVC -Paradigma ohne viel Einrichtungsarbeiten schnell verwenden können. Alles, was Sie brauchen, ist ein Webserver, der .htaccess -Dateien akzeptiert, und Sie können so gut wie gut gehen!
Mindestanforderungen: Php 7.0+.
Use this template auf der Seite "Hauptprojekt Repo" klicken.config.php . Passen Sie alle Parameter an, die Sie dort wünschen, oder fügen Sie $app neue Parameter hinzu, z. B. die Sitzungslogik. Standardmäßig müssen Sie nichts anpassen, um Ihre Website zum Betrieb zu nehmen.config-private.sample.php auf config-private.php und passen Sie sie an Ihre Anforderungen an. Zum Beispiel können Sie $app->db so einrichten, dass Sie eine PDO Instanz für Ihre lokale Datenbank sein können. Beachten Sie, dass config-private.php geladen wird, bevor in config.php etwas stattfindet.use Yamf/XYZ -Anweisungen verwendet werden können, müssen Sie einen Komponisten verwenden. Die Verwendung von Composer ist ziemlich einfach: Gehen Sie einfach zur Download -Seite und führen Sie das Skript oben aus. (Hinweis: Wenn Sie unter Windows sind, möchten Sie hier auf der Intro -Seite Anweisungen befolgen.)composer install (Wenn Sie eine composer.phar -Datei in Ihrem Verzeichnis haben, führen Sie php composer.phar install ). Es wird für eine Minute sitzen und nachdenken. Sie sind nicht hier und sie sind nicht absichtlich hier! YAMF wurde absichtlich geschrieben, um keine anderen externen Abhängigkeiten als den Autoloader des Komponisten zu verwenden, um die Eintrittsbarriere in die Verwendung des MVC -Paradigmas in PHP zu senken. Wenn Sie eines dieser Dinge wollen, ziehen Sie sie einfach mit Ihrem Lieblings -Abhängigkeitsmanager (wie Komponist) an. Da ein Komponist bereits erforderlich ist, um dieses Projekt für PSR-4 Autoloading auszuführen, empfehlen wir die Verwendung von Composer. vendor/autoload.php ist bereits für Sie in init.php enthalten.
Eine Notiz zu Ansichtsvorlagen finden Sie im Abschnitt zur Unterklasse.
Wenn Sie die folgende Dokumentation zu YAMF lesen, werden Sie wahrscheinlich viel besser dran sein, als nur zu springen und den Code selbst zu lesen. :) Es wird nur ein paar Minuten dauern und es lohnt sich!
Um das einfache Übergeben von Konfigurationsparametern wie Datenbankeinstellungen usw. zu erleichtern, übergibt YAMF eine $app -Variable der Klasse YamfAppConfig an jede Controller -Funktion. Sie können diese Variable einrichten, um Ihr Datenbank -PDO -Objekt zu speichern, Ihre Ansichtserweiterung oder Ihren Ordnerort und viele andere Einstellungen zu ändern. Wenn Sie $app Ihre eigenen Werte hinzufügen möchten, können Sie eine Klasse erstellen, die von YamfAppConfig abgeleitet ist, und die appConfigClass -Einstellung in config.php ändern, um auf Ihre benutzerdefinierte Klasse zu verweisen. Beachten Sie, dass Ihre benutzerdefinierte Klasse von YamfAppConfig abgeleitet werden muss! Siehe config.php um alle Einstellungen und Werte anzuzeigen, die von YAMF über $app übergeben werden. Bemerkenswerterweise können Sie:
viewsFolderName )viewExtension )defaultHeaderName / defaultFooterName )config-private.php ) $app ist automatisch in Ihren Ansichten für Sie erhältlich.
Das erste, was Sie wahrscheinlich tun möchten, ist eine neue Route hinzuzufügen. Befolgen Sie dazu die folgenden Schritte:
app/Controllers des Projekts hinzu. Unterordner sind in Ordnung. Der Controller muss nicht im Namen Controller haben, aber stellen Sie sicher, dass der Klassenname mit dem Dateinamen übereinstimmt.public Funktion sein, die zwei Parameter erfordert: $app und $request (in dieser Reihenfolge).routes.php und stellen Sie sicher, dass Sie die Dokumentation und Beispiele für die Funktionsweise von Routen verstehen.routes -Array hinzu.POST festlegen.Parent-Folder/Controller-Name haben.yamf/Responses/Response zurückgeben, was von einer View zu einer JSON -Antwort auf alles, was Sie wollen, wirklich sein können. Weitere Informationen finden Sie im nächsten Abschnitt.yamf/Responses/View zurück. Erstellen Sie eine PHP -Datei (Ansicht) im Ordner " views " - wiederum sind Unterordner in Ordnung - und in Ihrer Controller -Methode return new View('name/of/view'); .Zusamenfassend:
app/Controllers -Ordner hinzuroutes.php hinzufügenviewsreturn new View('name/of/view'); Alle Controller -Methoden, die als Ergebnis einer Route bezeichnet werden, sollten eine yamf/Responses/Response oder eine Unterklasse dieser Klasse zurückgeben. Hier sind einige Beschreibungen, wie man jeden benutzt. Die meisten können in einer Zeile nur mit dem Konstruktor verwendet werden.
Response - Die Basisklasse für eine Antwort von einer Route.new Response($statusCode = 200)yamf/Responses/Response Subklasse aus dieser übergeordneten Klasse, können alle einen benutzerdefinierten HTTP -Statuscode zurückgeben, wenn Sie möchten!ErrorMessage - Einfache Wrapper in der Ansicht, um einen 400 -Statuscode und den Fehler zu senden.new ErrorMessage($msg = '', $name = 'error', $title = '', $headerName = '', $footerName = '') . $name ist der Name der Ansicht.$error . Sie können dies nicht ohne Unterklasse ändern.views/header.php und views/footer.php .JsonResponse - Beispiel dafür, wie Sie eine JSON -Antwort von Ihrem Controller zurücksenden könnennew JsonResponse($data, $jsonEncodeOptions = 0)$data über echo json_encode($this->data, $this->jsonEncodeOptions);NotFound - verwendet, um eine 404 nicht gefundene Nachricht an den Client zurückzugeben.new NotFound($name = '404', $data = [], $title = '', $headerName = '', $footerName = '') . $name ist der Name der Ansicht.views/header.php und views/footer.php .Response .Redirect - Ermöglicht eine 302 -Umleitung auf eine andere Seite oder Routenew Redirect($redirectPath, $isInternalRedirect = true)$isInternalRedirect wird verwendet, um auf eine Route innerhalb der aktuellen Website/ routes.php -Daten umzuleiten. Wenn Sie auf eine interne Route umleiten möchten, verwenden Sie wie folgt um Redirect : new Redirect('/route/name); (Beachten Sie den Start / ). Wenn nicht, verwenden Sie so Redirect wie folgt: new Redirect('https://example.com', false); .View -Wird zur Rückgabe einer PHP-basierten HTML-Ansicht verwendet.new View($name, $data = [], $title = '', $headerName = '', $footerName = '') . $name ist der Name der Ansicht.compact zu verwenden. Siehe den BlogController des Beispiels.views/header.php und views/footer.php . Wenn Sie Ideen für weitere Response haben, die in YAMF enthalten sein sollten, öffnen Sie bitte eine Feature -Anfrage (über die Registerkarte "Probleme) oder eine Pull -Anfrage!
Zwei Hauptvariablen werden aus der Route in Ihre Controller -Methoden gesendet: $app und $request . Beachten Sie, dass alle View die Variablen von $app und $request verwendet haben. Sie müssen sie nicht als $data -Parameter senden.
AppConfig $app $app ist hauptsächlich Konfigurationsvariablen, die Sie in config.php eingerichtet haben. Überprüfen Sie diese Datei auf einen kurzen Blick auf das, was verfügbar ist. Einige der wichtigeren Elemente sind:
$app->db für eine Datenbankverbindungnull setzen, um sie überhaupt nicht zu verwenden. Zusätzlich zu diesen sind zwei Variablen verfügbar, die in init.php eingerichtet sind:
$app->isLocalHost -ob die Anwendung auf lokalem Host ausgeführt wird ( 127.0.0.1 oder ::1 )$app->basePath -Das Basisverzeichnis für Ihre aktuelle Webanwendung. Dies kann verwendet werden, um verschachtelte Webanwendungen auf Ihrem Webserver zu ermöglichen. Ich empfehle dringend , diese Variable in Ihren views zu verwenden, wenn Sie lokale Website -Links durchführen. Wenn Sie Dateien um oder später in einen Unterordner verschieben oder später in einen Unterordner verschieben. Um zu einer anderen Seite auf Ihrer Website zu verlinken, verwenden Sie einfach die Funktion $app->yurl(string) (YAMF URL) wie folgt: <?= $app->yurl('/path/to/page') ?> . $request $request wird alle Ihre Daten über Ihre Route und die verschiedenen Parameter mit Ihrer Anfrage enthalten. Es handelt sich um vom Typ yamf/Request . Es steht diese öffentlichen Mitglieder zur Verfügung:
$request->route -Route Route Zeichenfolge für diese Anfrage$request->controller -Zeichenfolge Name des Controllers$request->function -Zeichenfolge Name der Controller-Funktion zum Aufrufen$request->routeParams -alle Parameter in der Route wie {id}. Format: ['id' => Wert]$request->get -alle in der URL gefundenen Parameter-das gleiche Format wie $ _get (keine zusätzliche Verarbeitung)$request->post -alle post params-das gleiche Format wie $ _post (keine zusätzliche Verarbeitung durchgeführt)$request->anchor -falls verwendet, der # Teil der URL (ohne die #). Router ist klug genug, um nicht auf URLs wie /blah/#/foo zu stimmen. Der einfachste Weg für Sie, diesen Framework zu erweitern, besteht darin, aus Response (oder einer anderen Response ) abzuleiten und/oder eine übergeordnete Klasse für einige Ihrer Controller zu erstellen. Wenn Sie beispielsweise von View abgeleitet werden, können Sie die Ansichtsausgabe ändern, um den Twig -Templating -Engine anstelle der einfachen PHP -Ausgabe zu verwenden. Durch das Erstellen einer übergeordneten Klasse für Ihre Controller können Sie Dinge wie Validierung oder andere zusätzliche Verarbeitung von Daten hinzufügen, die für alle Ihre API -Routen stattfinden müssen, z. Die Optionen sind endlos und das Potenzial großartig!
Es gibt ein Beispiel für die Verwendung von Twig anstelle von RAW -PHP im Twig -Zweig!
Eine nützliche Funktion, die YAMF unterstützt, sind statische Webseiten, für die weder eine route noch ein controller erforderlich sind. Wenn Sie nur eine einfache Seite sein möchten /about , werfen Sie eine Seite über die about.php views/static/ - /about Werke auf Ihrer Website. Was ist mit Unterordnern wie /blog/post-name ? Das funktioniert auch! Fügen Sie eine views/static/blog/post-name.php Datei hinzu und sie funktioniert nur (TM)! Sie können dies verwenden, um auf Ihrer Website immer noch hübsche URLs zu haben, ohne sich mit dem Hinzufügen von Routen und Controllern zu beschäftigen.
Sie können den Standort der statischen Ansichten in config.php konfigurieren.
Beachten Sie, dass der Router versucht, eine router.php -Route zu erreichen, bevor er nach statischen Seiten endet.
Eine Funktion, die der Router unterstützt, das nicht sofort aktiviert ist, ist die URL-Verkürzung-z. B. https://example.com/short-url . Es ist eine Datenbankverbindung erforderlich. Wenn Sie jedoch die Datenbankverbindung hinzufügen und über die entsprechende Datenbanktabelle verfügen (das Schema befindet sich in config.sample.php ), kann URL -Verkürzung verwendet werden, wenn Sie möchten. Sie müssen diese Funktion nicht aktivieren.
Ich habe eine Standard -Sitzungslogik in config.sample.php aufgenommen. Fühlen Sie sich frei, es zu verwenden, ändern oder werfen Sie es raus. Wenn Sie Vorschläge zur Verbesserung dieser Funktionalität haben, öffnen Sie bitte eine Pull -Anfrage oder ein Problem, um weitere Diskussionen zu generieren.
Ich bin froh, dass du gefragt hast! Es gibt immer Dinge, die an einem Open-Source-Projekt durchgeführt werden können: Beheben von Fehler, neuen Funktionen und mehr! Schauen Sie sich die Registerkarte "Probleme dieses Repositorys" an und sehen Sie sich an, welche Fehler gemeldet wurden und welche Funktionen angefordert wurden. Es gibt einige weitere Informationen über den Beitrag zum beitragenden Dokument.
MIT -Lizenz. Bitte achten Sie darauf, dass Sie die Lizenz für diesen Framework (zusammen mit einem Github -Link, wenn Sie sich großzügig fühlen!) Fügen, wenn Sie sie auf Ihrer Website verwenden. Danke schön! :)
Besonderer Dank geht an Bootswatch für das im Beispiel verwendete Bootstrap -Papierthema.