Pour les projets petits et simples, consiste à:
Sekeleton MVC utilise l'architecture MVC comme le suggère le nom. MVC signifie Model-View-Controller. Modèle-View-contrôleur - 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.phpindex.php nécessitent AutoloAD (compositeur) et Global Aiders (plus à ce sujet plus tard).index.php SendResponse () est appelé sur l'instance d'application $ qui envoie des en-têtes et un code d'état appropriés ainsi que le contenu qui est renvoyé au navigateur.Maintenant, vous comprenez comment le framework gère tout cela. Vous trouverez ci-dessous la documentation pour chaque classe et quelques exemples pour vous aider à démarrer sur le développement.
YourAppApp : votre codeControllers : tous les contrôleursModel : tous les modèlesView : toutes les vuesConfig.php : cours de configuration utilisateurCore : Code de Frameworkpublic : exposé au Webindex.php : le point de départ de l'application.htaccess : redire toute demande à index.phpassets : tous les actifs statiques comme CSS / JS vivent icistorage : vues compilées, documents téléchargés, etc.vendor : Téléchargement du compositeur des bibliothèques requises AUTROUGH La plupart du cadre suit la convalescence sur la configuration de la configuration est requise pour les paramètres de base de données et le chemin de vue, etc.
La configuration de l'utilisateur vit dans le répertoire de votre application dans la classe de configuration. L'ouverture de ce fichier que vous voyez la classe Config étend BasEconfig ( Core Config) qui est définie en interne dans Skeleton. La configuration est surtout des parmons Const, certaines peuvent être des méthodes statiques.
Cette classe est documentée via des commentaires, alors vérifiez-le et vous pourrez déterminer toute la configuration par vous-même.
Pour les conventions de routage, les conventions sont utilisées sur des configurations pour ex:.
Imaginez vouloir afficher le poste de 3 ID Route ressemblerait à quelque chose comme ça
example.com/user-post/show-photos/3/paris
Exemple ci-dessus a
Donc, la classe de contrôleur ci-dessus ressemblera à
<?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 '
]);
}
}Mais vous pouvez vous demander quoi de /, / À propos, etc. Routes?
Ces itinéraires sont automatiquement acheminés vers Default_Controller (peuvent être modifiés en config) par défaut est SiteController et / Action est également par défaut de la méthode d'index qui peut être modifié dans la configuration.
Vous pouvez également remarquer que l'objet CoreRequest est toujours passé comme premier argument. Il contient divers aides pour la demande (plus d'informations dans la section de demande).
La demande est traitée comme un objet. Il passera par Deafault à la méthode de chaque contrôleur, car le premier argument et d'autres paramètres seront passés après sa séquence. ex:
Pour une 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 '
]);
}
}Voici quelques méthodes pratiques fournies par l'objet de demande.
/* 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 La réponse qui doit être envoyée au navigateur peut être obtenue par
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() La validation est inspirée par Laravel et peu de règles de base et la plupart des usages sont fournies.
$ errorMsgs = Core Validator:: validate ( $ request -> all (), [
" name " => [ " required " , " max:30 " ],
" mobile " => [ " required " , " digits:10 " ],
" photo " => [ " required " , " image:image/jpeg " , " max:100 " ],
]);Les messages générés par Framework sont simples et vous pouvez personnaliser les fichiers de configuration dans le fichier de configuration. Ex.
public static function getMessage ( $ rule , $ field , $ params , $ messages = [])
{
$ messages = [
" required " => " Hmm... plz get the $ field filled :) "
];
return parent :: getMessage ( $ rule , $ field , $ params , $ messages );
}Dans l'exemple ci-dessus, le message requis sera personnalisé.
Échoue si le champ est laissé vide selon la fonction vide () de PHP.
Doit être une valeur de chaîne.
Doit être une valeur de chaîne numérique ou numérique avec une taille donnée, si la taille n'est pas donnée, vérifiez simplement la valeur numérique
Vrai pour oui, non, oui, non, vrai, faux, 0, 1 autrement faux
Les données de demande doivent contenir un champ avec le même nom avec _Confirmation suffixe. Ex: s'il est utilisé sur le mot de passe, il vérifierait le champ Password_confirmation
Que ce soit un identifiant de messagerie valide ou non.
Vérifiez s'il s'agit d'un fichier téléchargé valide ou non
Vérifiez si c'est une image valide ou non. Types autorisés par défaut: image / jpeg, image / gif, image / png, image / webp, image / svg + xml, image / bmp.
Que la date valide soit passée par StrtoTime () Fonction
Vérifiez si les deux date sont égales ou non
Vérifiez si la date de l'utilisateur vient après la date donnée.
Vérifiez si la date de l'utilisateur vient avant celle donnée.
Champ sous validation et, étant donné, il faut avoir des valeurs différentes.
Champ sous validation et, étant donné, il faut avoir les mêmes valeurs.
Le champ sous validation doit être présent peut être nul ou vide.
Règle de taille maximale. Pour
Numéro : le nombre doit être inférieur ou égal à la taille.
String : la longueur doit être inférieure ou égale à la taille.
Tableau : le nombre d'éléments doit être inférieur ou égal à la taille.
Fichier téléchargé : la taille des fichiers doit être inférieure ou égale à la taille.
Règle de taille minimale. Contrainte identique à la règle max: taille .
Définissez vos informations d'identification de base de données et le type de base de données dans le fichier de configuration. Ensuite, vous pouvez toujours obtenir la connexion en appelant:
$ conn = Core Database:: getConnection (); // PDO instance Le modèle est l'endroit où votre entreprise résiderait, ce qui inclut également la logique liée à la DB. C'est pourquoi peu de méthodes pratiques sont fournies:
// 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 Le modèle déduire le nom de la table en tant que Snake_Case Plural Forme de votre nom de classe. Ainsi, dans le cas ci-dessus, pour la classe d'utilisateurs serait les utilisateurs de la même manière que AppData serait app_data et la galerie serait des galeries. Vous pouvez définir votre propre nom en remplaçant la propriété $table , la même manière que $id est considérée comme une clé primaire par défaut et peut également être remplacée.
class User extends Model
{
protected $ table = " my_table " ;
protected $ id = " tbl_id " ;
}Tout ce qui est complexe que cela, vous devez interroger par vous-même. 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 ]);
}
} Pour obtenir un ID d'insert dernier, vous pouvez faire Database::getConnection()->lastInsertId() .