AIS Framework est conçu pour être simple et efficace, permettant aux développeurs de créer et de déployer rapidement les applications. Son architecture promeut le code propre et maintenable, ce qui en fait un excellent choix pour les débutants et les développeurs expérimentés à la recherche d'une solution robuste et évolutive.
Clone, puis utilisez:
git clone https://github.com/titan2420/ais.git
L'architecture AIS est conçue avec une simplicité en son cœur. Cette simplicité facilite une compréhension intuitive du système, ce qui permet aux développeurs d'interagir plus facilement avec et de modifier le cadre. En minimisant la complexité, AIS garantit que les développeurs peuvent se concentrer davantage sur le développement des fonctionnalités plutôt que sur la lutte avec le cadre lui-même.
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
Dans le cadre AIS, les routes sont définies à l'aide d'un dossier et d'une structure de fichiers simples dans le dossier du contrôleur. Chaque dossier représente un segment d'itinéraire potentiel, et chaque fichier de ces dossiers est accessible en tant que point de terminaison. Par exemple:
---- app
-------- controller
------------ home.php (Accessible via /)
------------ user
---------------- home.php (Accessible via /user/)
---------------- transactions.php (Accessible via /user/transactions)
---------------- edit-profile.php (Accessible via /user/edit-profile)
Cette structure permet un mappage facile des URL à leurs contrôleurs et vues correspondants, simplifiant le processus de routage.
Il existe un middleware, un prétraitement et une architecture post-traitement en IA pour empêcher la duplication du code et rendre le code plus maintenable.
Jetez un œil à cet exemple:
---- app
-------- controller
------------ home.php
------------ middleware.php
------------ user
---------------- home.php
---------------- preprocess.php
---------------- postprocess.php
Lorsque le client arrive à /user/ , les étapes suivantes seront prises:
controller/middleware.php sera exécuté.controller/user/preprocess.php sera exécuté.controller/user/home.php sera exécuté.controller/user/postprocess.php sera exécuté.Le routage dynamique dans le cadre AIS permet de manière dynamique des modèles d'URL flexibles qui s'adaptent aux demandes entrantes. Au lieu d'avoir une structure URL fixe, le routage dynamique utilise des modèles qui peuvent correspondre à plusieurs chemins d'url. Voici comment cela fonctionne:
---- app
-------- controller
------------ user
---------------- dynamic.php (Accessible via /user/{value})
Par exemple, si une demande est faite à /user/123 , le système de routage dynamique interprétera 123 comme un paramètre et le traitera à l'aide du contrôleur user/dynamic.php par variable $link_vars .
<?php
// controller/user/dynamic.php
echo " User id: " . $ link_vars [ 0 ]; // User id: 123
?>Vous pouvez également utiliser la structure du répertoire pour le routage dynamique, par exemple:
---- app
-------- controller
------------ user
---------------- dynamic
-------------------- dynamic
------------------------ home.php (Accessible via /user/{value[0]}/{value[1]})
------------------------ open.php (Accessible via /user/{value[0]}/{value[1]}/open)
-------------------- home.php (Accessible via /user/{value[0]})
-------------------- edit.php (Accessible via /user/{value[0]}/edit)
Par exemple, si une demande est faite à /user/123/AIS-Project , le système de routage dynamique interprétera 123 comme un paramètre et le traitera à l'aide du contrôleur user/dynamic.php par variable $link_vars .
<?php
// controller/user/dynamic/dynamic/open.php
<<<<<<< HEAD
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ;
=======
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ; // Opening AIS-Project of 123 user.
>>>>>>> 0 bee68c121c4e091084a9bf093779bfe647b757d
?> Vous pouvez charger une vue à l'aide de la fonction view(view_path, data, options) .
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?> S'il y a une layout.php , il sera automatiquement inclus dans la vue.
---- app
-------- view
------------ layout.php
------------ home.php
------------ user
---------------- home.php
---------------- transactions.php
---------------- edit-profile.php
Vous utiliserez des données utilisateur dans /user/home View.
<?php
// view/user/home.php
echo " Welcome, " . $ user [ ' name ' ] . " ! " ;
?> Vous pouvez facilement créer des API à l'aide de la boîte à outils AIS.
<?php
// controller/api/user/get-users.php
$ users = database:: select ( ' users ' , ' * ' , [ ' LIMIT ' => 1 ]);
response ( $ users );
?>La sortie sera au format JSON.
{
"meta" : {
"status" : " SUCCESS "
},
"data" : [
{
"id" : 1 ,
"name" : " John Doe "
}
]
}Vous pouvez facilement créer des commandes CLI à l'aide de la boîte à outils AIS.
<?php
// controller/_cli/jobs/deactivate-users.php
$ inactive_users = database:: select ( ' users ' , ' * ' , [ ' active ' => 1 ]);
. . .
cout ( " Deactivated users: " . count ( $ inactive_users ));
?>Vous pouvez l'exécuter en utilisant cette commande:
php index.php -r jobs/deactivate-users
Dans AIS, il est préféré de ne pas utiliser de modèles pour la simpilicité. Cependant, dans les contrôleurs, vous pouvez charger des modèles en utilisant la fonction model(model_path) en cas de besoin.
Dans les IA, les modèles sont simples et faciles à utiliser. Ils sont situés dans le dossier app/model et sont utilisés pour interagir avec la base de données.
<?php
// controller/user/home.php
model ( ' user ' );
// or
require MODEL . ' user.php ' ;
$ user = getUser ( $ _SESSION [ ' user_id ' ]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?>AIS utilise une version personnalisée de Medoo comme emballage de la base de données. Il est facile à utiliser et facile à comprendre.
<?php
// model/user.php
function getUser ( $ user_id ) {
return database:: select ( ' users ' , ' * ' , [ ' id ' => $ user_id ]);
}
function activateUser ( $ user_id ) {
return database:: update ( ' users ' , [ ' active ' => 1 ], [ ' id ' => $ user_id ]);
}
. . .
?> Ne le rendez pas complexe!
Règle AIS 1: pour simplifier, ne pas utiliser des classes pour les contrôleurs et les modèles pour assurer des implémentations faciles.
Règle AIS 2: Pour simplifier, chaque fichier n'est qu'une demande, garantissant que les fichiers restent petits et gérables.
Règle AIS 3: Pour plus de simplicité, pas besoin de spécifier la méthode HTTP dans les demandes et les routes, les noms de fichiers suffisent!
Règle AIS 4: pour simplicité, sans utiliser de modèles sont recommandés.
Voici une utilisation complète pour les méthodes dans le cadre AIS:
Force une page pour accéder via la méthode de la demande HTTP et le type de contenu. Vous devez appeler cette fonction au début de votre contrôleur. Si les conditions ne sont pas remplies, le script se terminera avec une erreur HTTP.
Paramètres:
$options (Array): Options de méthode et de type de contenu.Exemple d'utilisation:
<?php
// controller/user/home.php
http_check ([ ' method ' => ' POST ' , ' content_type ' => ' application/json ' ]);
$ data = json_decode ( file_get_contents ( ' php://input ' ), true );
?>Charge un fichier de modèle ou un répertoire des fichiers de modèles de contenu.
Paramètres:
$model (String): le chemin du modèle dans le dossier app/model .Exemple d'utilisation:
<?php
// controller/user/home.php
model ( ' user ' );
?>Charge un fichier d'affichage avec des données et des options.
Paramètres:
$view (String): le chemin de vue dans le dossier app/view .$data (tableau): les données sont un tableau associatif à extraire dans la vue comme des variables.$options (Array): Options de chargement de mise en page comme ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Ces options sont accessibles à l'aide de la variable $_VIEW .Exemple d'utilisation:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
?> Rend une vue et renvoie le contenu du tampon de sortie. Au lieu d'utiliser view() pour faire écho à la sortie vers le client, vous pouvez utiliser render() pour obtenir le contenu du tampon de sortie.
Paramètres:
$view (String): le chemin de vue dans le dossier app/view .$data (tableau): les données sont un tableau associatif à extraire dans la vue comme des variables.$options (Array): Options de chargement de mise en page comme ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Ces options sont accessibles à l'aide de la variable $_VIEW .Exemple d'utilisation:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
$ view = render ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
echo $ view ;
?> Charge un fichier de bibliothèque ou un répertoire de bibliothèque avec le fichier init.php .
Paramètres:
$lib (chaîne): le chemin de la bibliothèque dans le dossier app/lib .Exemple d'utilisation:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>Redirige vers une URL spécifiée et termine le script.
Paramètres:
$url (String): L'URL à rediriger vers.Exemple d'utilisation:
redirect ( ' https://example.com ' );Produit des données avec un délimiteur en option à la console. Ce nom est donné à partir de la langue C ++.
Paramètres:
$data (mixtes): les données à sortir.$delimiter (String): le délimiteur à ajouter.Exemple d'utilisation:
cout ( ' Hello World ' , " n " );Envoie une réponse avec des données et des métadonnées facultatives à l'utilisateur dans les API, puis termine le script.
Paramètres:
$data (mixtes): les données de réponse.$meta (tableau): métadonnées facultatives.Exemple d'utilisation:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}Envoie une réponse avec un statut et des données à l'utilisateur dans les API, puis termine le script.
Paramètres:
$code (chaîne): l'état à envoyer à l'utilisateur.$data (tableau): les données de réponse.Exemple d'utilisation:
status ( ' PROCESS_ERROR ' , [ ' error ' => ' Something went wrong ' ]);
// Output to endpoint: {"data":{"error":"Something went wrong"},"meta":{"status":"PROCESS_ERROR"}}Envoie une réponse de réussite avec les données.
Paramètres:
$data (tableau): les données de réponse.Exemple d'utilisation:
success ();
// Output to endpoint: {"data":[],"meta":{"status":"SUCCESS"}}Envoie une réponse de défaillance avec les données et le statut.
Paramètres:
$data (tableau): les données de réponse.$status (chaîne): le code d'état.Exemple d'utilisation:
fail ([ ' error ' => ' Invalid request ' ], ' ERROR ' );Envoie un code d'état HTTP avec des données et des métadonnées facultatives.
Paramètres:
$code (int): le code d'état HTTP.$data (tableau): les données de réponse.$meta (tableau): métadonnées facultatives.Exemple d'utilisation:
http_status ( 404 ); // Shows browser 404 error.Exemple d'utilisation:
http_status ( 404 , [ ' error ' => ' Not found ' ], [ ' status ' => ' ERROR ' ]);
// HTTP error 404 + Output to endpoint: {"data":{"error":"Not found"},"meta":{"status":"ERROR"}}Exemple d'utilisation:
http_status ( 404 , " Page not found! " );
// HTTP error 404 + Output text to endpoint: Page not found!Ne fait rien :). Il est utilisé pour Code Beauty ou tout simplement un espace réservé pour le développement futur.
Exemple d'utilisation:
do_nothing (); Dumps ( var_dump ) Une variable et termine éventuellement le script.
Paramètres:
$var (mixte): la variable à vider.$die (bool): s'il faut terminer le script.Exemple d'utilisation:
dump ( $ var , true ); Alias pour la méthode dump .
Paramètres:
$var (mixte): la variable à vider.$die (bool): s'il faut terminer le script.Exemple d'utilisation:
d ( $ var , true );Alias pour "Dump and Die". Jette une variable et termine le script.
Paramètres:
$var (mixte): la variable à vider.Exemple d'utilisation:
dd ( $ var );Génère une chaîne alphanumérique aléatoire d'une longueur spécifiée.
Paramètres:
$length (int): la longueur de la chaîne aléatoire.Exemple d'utilisation:
strand ( 8 ); // Output: "9S34zD7o" Envoie une demande post- application/x-www-form-urlencoded avec des données de formulaire.
Paramètres:
$url (chaîne): l'URL à envoyer la demande.$data (tableau): les données de formulaire à envoyer.Exemple d'utilisation:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); Envoie une demande de candidature application/json avec des données JSON.
Paramètres:
$url (chaîne): l'URL à envoyer la demande.$data (tableau): les données JSON à envoyer.Exemple d'utilisation:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);Sorte une arrière-retour de la pile d'appels actuelle.
Exemple d'utilisation:
backtrace (); // Outputs a backtrace of the current call stack.Rince le tampon de sortie et ferme les connexions.
Exemple d'utilisation:
close_everything ();Ferme tout et termine le script.
Exemple d'utilisation:
die_gracefully ();