Für kleine und einfache Projekte bestehen aus:
Sekeletton MVC verwendet MVC -Architektur, wie dies vorschlägt. MVC steht für Model-View-Controller. Modell-View-Controller-Wikipedia
Model:
The central component of the pattern. It is the application's dynamic data structure, independent of the user interface. It directly manages the data, logic and rules of the application.
View:
Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.
Controller:
Accepts input and converts it to commands for the model or view.
example.com/shop/show-shoes/index.php -Datei gesendetindex.php -Dateien erfordert autoload (Komponist) und globale Helfer (dazu später mehr).index.php sendResponse () wird auf $ App -Instanz aufgerufen, die entsprechende Header und Statuscode neben Inhalten sendet, die an den Browser zurückgesendet werden.Jetzt verstehen Sie, wie Framework dies alles umgeht. Im Folgenden finden Sie Dokumentationen für jede Klasse und einige Beispiele, um die Entwicklung zu starten.
YourAppApp : Ihr CodeControllers : Alle ControllerModel : Alle ModelleView : Alle AnsichtenConfig.php : BenutzerkonfigurationsklasseCore : Framework -Codepublic : dem Web ausgesetztindex.php : Startpunkt der App.htaccess : Alle Anforderungen an index.php umleitenassets : Alle statischen Vermögenswerte wie CSS/JS leben hierstorage : Kompilierte Ansichten, hochgeladene Dokumente usw.vendor : Download der erforderlichen Bibliotheken durch den Komponisten Altough Das meiste Framework folgt der Konfiguration über die Konfiguration. Benutzerkonfiguration ist für DB -Parameter und Ansichtspfad usw. erforderlich.
Benutzerkonfiguration lebt in Ihrem App -Verzeichnis in der Konfigurationsklasse. Öffnen dieser Datei Sie sehen, dass die Konfigurationsklasse BaseConfig ( Core config) erweitert, die intern im Skelett definiert ist. Am meisten sind Konstruktionskonstant -PARMAs einige möglicherweise statische Methoden.
Diese Klasse wird durch Kommentare dokumentiert, also überprüfen Sie sie und Sie können alle Konfigurationen selbst herausfinden.
Für Routing -Konventionen werden über Konfigurationen für Ex: verwendet.
Stellen Sie sich vor, Sie möchten den Beitrag der 3 -ID -Route zeigen, würde ungefähr so aussehen
example.com/user-post/show-photos/3/paris
Oben Beispiel haben
Also sieht die obere Controller -Klasse so aus wie
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}Aber Sie können fragen, was ist mit /, /um usw. Routen?
Diese Routen werden automatisch an default_controller weitergeleitet (kann in config geändert werden). Standard ist SiteController, und / / Aktion ist standardmäßig in die Indexmethode, die auch in der Konfiguration geändert werden kann.
Sie können auch bemerken, dass CoreRequest -Objekt immer als erstes Argument übergeben wird. Es enthält verschiedene Helfer für Anfrage (weitere Informationen im Anforderungsabschnitt).
Anfrage wird als Objekt behandelt. Es wird von Deafault an die Methode jedes Controllers übergeben, da das erste Argument und andere Parameter danach in der Sequenz übergeben werden. ex:
Für URL example.com/user-post/show-photos/3/paris
<?php
namespace App Controllers ;
use Core Request ;
class UserPost {
public function showPhotos ( Request $ request , $ id , $ location ) {
# $id= 3 and $location= paris
return view ( ' photos.show ' , [
' id ' => $ id ,
' location ' => ' paris '
]);
}
}Hier sind einige praktische Methoden, die Sie mit dem Anforderungsobjekt an Sie zur Verfügung gestellt haben.
/* Check Method of request */
$ request -> isGet ();
$ request -> isPost ();
/*
How to get superglobals
These methods if provided returns specific field or entire array if no parameters are passed.
If field does not exits null is returned
*/
$ request -> query ( ' field ' ); // For GET
$ request -> input ( ' field ' ); // For POST
$ request -> server ( ' field ' ); // For SERVER
$ request -> files ( ' field ' ); // For FILES
$ request -> all (); // For FILES and POST merged Antwort, die an den Browser gesendet werden müssen
view ( ' viewpath ' , $ data = []); // viewpath ex. phtots.show for Views/photos/show.php
view ([ ' header ' , ' content1 ' , ' content2 ' , ' footer ' ], $ data = []); // array alternative
json ( $ data = [], $ options , $ depth = 512 ); // Same as setting header("Contetnt-Type: text/json"); and using json_encode() Die Validierung wird von Laravel inspiriert und es werden nur wenige grundlegende und am häufigsten verwendete Regeln vorgesehen.
$ errorMsgs = Core Validator:: validate ( $ request -> all (), [
" name " => [ " required " , " max:30 " ],
" mobile " => [ " required " , " digits:10 " ],
" photo " => [ " required " , " image:image/jpeg " , " max:100 " ],
]);Nach Framework generierte Nachrichten sind einfach und Sie können diese in der Konfigurationsdatei anpassen. Ex.
public static function getMessage ( $ rule , $ field , $ params , $ messages = [])
{
$ messages = [
" required " => " Hmm... plz get the $ field filled :) "
];
return parent :: getMessage ( $ rule , $ field , $ params , $ messages );
}In der obigen Beispiel ist die erforderliche Nachricht benutzerdefiniert.
Fällt aus, wenn das Feld gemäß der leeren () -Funktion von PHP leer bleibt.
Muss ein Stringwert sein.
Muss numerischer oder numerischer Stringwert mit gegebener Größe sein, wenn die Größe nicht einfach als numerischen Wert prüft
Richtig für Ja, Nein, ja, nein, wahr, falsch, 0, 1 ansonsten falsch
Anforderungsdaten müssen ein Feld mit demselben Namen mit _Confirmations -Suffix enthalten. Bsp.: Wenn es auf Passwort verwendet wird, würde es das Feld Passwort_Confirmation überprüfen
Ob es sich um eine gültige E -Mail -ID handelt oder nicht.
Überprüfen Sie, ob es sich um eine gültige hochgeladene Datei handelt oder nicht
Überprüfen Sie, ob es ein gültiges Bild ist oder nicht. Standardmäßig erlaubte Typen: Bild/JPEG, Bild/GIF, Bild/PNG, Image/Webp, Image/SVG+XML, Image/BMP.
Ob es sich um das gültige Datum handelt
Überprüfen Sie, ob beide Datum gleich sind oder nicht
Überprüfen Sie, ob das Benutzerdatum nach dem angegebenen kommt.
Überprüfen Sie, ob das Benutzerdatum vor dem angegebenen kommt.
Das Feld unter Validierung und gegebenenfalls muss unterschiedliche Werte haben.
Das Feld unter Validierung und gegebenenfalls muss die gleichen Werte haben.
Das Feld unter Validierung muss vorhanden sein, kann null oder leer sein.
Maximale Größenregel. Für
Nummer : Die Zahl muss weniger als oder gleich der Größe sein.
Zeichenfolge : Die Länge muss weniger als oder gleich der Größe sein.
Array : Die Anzahl der Elemente muss geringer sein als oder entsprechen der Größe.
Hochgeladene Datei : FileSize muss geringer als oder entsprechen der Größe.
Mindestgrößenregel. Einschränkung wie max: Größenregel.
Legen Sie Ihre Datenbank -Anmeldeinformationen und den DB -Typ in Konfigurationsdatei ein. Dann können Sie die Verbindung immer erhalten, indem Sie anrufen:
$ conn = Core Database:: getConnection (); // PDO instance Das Modell ist dort, wo sich Ihr Unternehmen wohnen würde, das auch DB -bezogene Logik umfasst. Deshalb werden nur wenige praktische Methoden bereitgestellt:
// suppose
class User extends Model { /* Empty */ }
$ user = new App Models User ();
$ user -> find ( $ id , columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // Get single row
$ user -> all (columns = [ ' * ' ], $ fetchStyle = PDO :: FETCH_BOTH ); // get all rows
$ user -> insert ( $ data ); // As associative array of column name and values
$ user -> update ( $ id , $ data ); // $id to be updated with $data
$ user -> delete ( $ id ); // Row to delete with $id Das Modell schließt den Namen der Tabelle als Pluralform von Snake_Case ab, die Sie Klassennamen haben. Im obigen Fall für die Benutzerklasse wären Benutzer genauso wie AppData app_data und Galerie wäre Galerien. Sie können Ihren eigenen Namen durch Überschreibung von $table -Eigenschaft definieren, wie $id als Standard -Primärschlüssel als überschrieben werden.
class User extends Model
{
protected $ table = " my_table " ;
protected $ id = " tbl_id " ;
}Alles Komplexe als diese, die Sie selbst abfragen können. Ex:
use Core Model ;
use Core Database ;
class User extends Model
{
public function deleteByName ( $ name )
{
$ sql = " DELETE FROM $ this -> table WHERE name=? " ;
return Database:: getConnection ()
-> prepare ( $ sql )
-> execute ([ $ name ]);
}
} Um die letzte Einfügungs-ID zu erhalten, können Sie Database::getConnection()->lastInsertId() durchführen.