Sunhill Framework est un cadre de développement d'applications PHP simple, rapide et puissant qui vous permet de développer des applications plus modernes en utilisant le motif MVC (modèle - View - Controller).
htaccess.txt en .htaccess (important)System/Config.php et modifiez votre base de données, votre cache et vos paramètres système.Voir ci-dessous pour plus de détails.
root
├── App
│ ├── Controllers
│ │ ├── Error.php
│ │ └── Home.php
│ ├── Models
│ │ ├── Error.php
│ │ └── Home.php
│ └── Views
│ ├── Error.php
│ └── Home.php
├── Core
│ ├── App.php
│ ├── Controller.php
│ ├── Model.php
│ └── View.php
├── Public
│ ├── cache
│ ├── css
│ ├── img
│ └── js
├── System
│ ├── Config.php
│ ├── SunCache.php
│ ├── SunDB.php
│ └── SunSitemap.php
├── .htaccess
├── index.php
└── init.php
App/Controller : Créez vos contrôleurs personnalisés dans ce dossier.
App/Models : créez vos modèles personnalisés dans ce dossier.
App/Views : créez vos vues personnalisées dans ce dossier.
Core : Ce dossier contient l'application principale, le modèle, la vue et les fichiers de contrôleur. Tous les fichiers personnalisés du modèle, de la vue et du contrôleur en héritent. Ne modifiez pas ces fichiers si vous n'avez pas vraiment besoin.
Public : Téléchargez tous vos fichiers personnalisés (CSS, JS, IMG, bootstrap, etc.) dans ce dossier. Vos vues personnalisées utiliseront ces fichiers.
System : Ce dossier contient des classes système et des fichiers de configuration. Apporter vos modifications uniquement dans le fichier de configuration.
Ouvrez le fichier System/Config.php et apportez vos modifications.
Paramètres de la base de données:
define ( ' DB_HOST ' , ' localhost ' ); // database host
define ( ' DB_PORT ' , ' 3306 ' ); // database port
define ( ' DB_DBNAME ' , '' ); // database name
define ( ' DB_USERNAME ' , '' ); // database username
define ( ' DB_PASSWORD ' , '' ); // database passwordParamètres de cache:
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];Paramètres du système:
define ( ' SYS_PHPERR ' , true ); // php errors (show or hide, true / false)
define ( ' SYS_SYSERR ' , false ); // system errors (shor or hide, true / false)
define ( ' SYS_PGCACHE ' , false ); // page caching (true / false)
define ( ' SYS_CHEXCLUDE ' , []); // excluded pages for page caching (array)
define ( ' SYS_HOMEPAGE ' , ' home ' ); // home page (index, home, main, etc.)
define ( ' SYS_ERRPAGE ' , ' error ' ); // error page (if requested page does not exist, redirect to this page)Exemple d'URL:
https://www.web_address.com/[controller_name]/[method_name]/[parameters]
Appelez une page (contrôleur):
https://www.sunhillint.com/user
Cette adresse appellera le contrôleur User .
Appelez une page (contrôleur) avec l'action (méthode):
https://www.sunhillint.com/user/list
Cette adresse appellera le contrôleur User et exécutera la méthode list .
Appelez une page (contrôleur) avec l'action (méthode) et les paramètres:
https://www.sunhillint.com/user/update/3
Cette adresse appellera le contrôleur User et exécutera la méthode update avec 3 paramètres.
Les contrôleurs répondent aux actions de l'utilisateur (soumettre des formulaires, cliquez sur les liens, etc.). Les contrôleurs sont des classes qui étendent la classe Core Controller.
Les contrôleurs sont stockés dans le dossier App/Controllers . Un échantillon de contrôleurs intérieurs et d'erreurs est inclus. Les classes de contrôleur doivent être dans l'espace de noms de App/Controllers . Vous pouvez ajouter des sous-répertoires pour organiser vos contrôleurs, donc lors de l'ajout d'un itinéraire pour ces contrôleurs, vous devez spécifier l'espace de noms.
Exemple de contenu de fichier de contrôleur (sans accès à la base de données, page statique):
public function show () {
require_once ( $ this -> view ); // include view file (with $result content)
}Exemple de contenu de fichier de contrôleur (avec accès à la base de données, page dynamique):
public function show () {
if (! empty ( $ this -> model )) { // if this page needs database
$ result = ( $ this -> model )-> show (); // call model class' show method
}
require_once ( $ this -> view ); // include view file (with $result content)
}Les classes de contrôleur contiennent des méthodes qui sont les actions. Pour créer une action, ajoutez le nom de la méthode dans le contrôleur et utilisez-le dans l'URL (paramètres de route).
Exemple d'URL:
https://www.web_address.com/[controller_name]
Toutes les pages doivent avoir un fichier de contrôleur et show doit y être.
Les vues sont utilisées pour afficher des informations. Afficher les fichiers dans le dossier App/Views . Aucun accès à la base de données ou quelque chose de tel ne devrait se produire dans un fichier d'affichage.
Les vues étendent la classe CoreView et si votre vue (page) a besoin d'accès à la base de données, vos valeurs seront transmises à partir du fichier de contrôleur.
Exemple de contenu de fichier d'affichage pour plusieurs enregistrements (à l'intérieur des balises HTML):
foreach ( $ result as $ row ) {
echo " ... " ;
}ou (pour un dossier):
echo $ result [ 0 ][ ' content ' ];Toutes les pages doivent avoir un fichier d'affichage.
Les modèles sont utilisés pour obtenir et stocker des données dans votre application. Ils ne savent rien de la façon dont ces données seront présentées dans les vues. Les modèles étendent la classe CoreModel et utilisent PDO pour accéder à la base de données (y compris la classe SUNDB). Ils sont stockés dans le dossier App/Models .
Toutes les pages doivent avoir un fichier de modèle (même si elle est vide) et show la méthode doit y être.
Utilisation de la classe SUNDB PDO via le modèle principal:
$ result = $ this -> query ( ' SELECT * FROM table_name ' ); // send query to the main model
return $ result ; // return the result to the controllerUtilisation directement de la classe SUNDB PDO:
$ result = ( $ this -> pdo )-> select ( ' table_name ' )
-> run (); // select all records from the table
return $ result ; // return the result to the controllerVeuillez consulter la classe SUNDB PDO pour une utilisation détaillée.
Le cadre comprend un système de mise en cache de page spécial (classe SunCache).
Le système de mise en cache peut être activé / désactivé dans le fichier System/Config.php :
define ( ' SYS_PGCACHE ' , true ); // page caching (true / false) Les pages exclues peuvent être définies dans le fichier System/Config.php :
define ( ' SYS_CHEXCLUDE ' , [ ' home ' , ' error ' ]); // excluded pages for page caching (array) Les paramètres de cache peuvent être modifiés dans le fichier System/Config.php :
$ cacheConfig = [
' cacheDir ' => ' /../Public/cache ' , // cache folder path
' fileExtension ' => ' html ' , // cache file extension
' storageTime ' => 24 * 60 * 60 , // storage time (seconds)
' contentMinify ' => true , // content minification
' showTime ' => true , // show page load time
' sefUrl ' => true // website sef url status
];Veuillez consulter le cours de Suncache pour une utilisation détaillée.