MINI est une application PHP squelette extrêmement simple et facile à comprendre, réduite au maximum. MINI n'est PAS un framework professionnel et il ne vient pas avec tout ce que possèdent les vrais frameworks. Si vous souhaitez simplement afficher quelques pages, effectuer quelques appels de base de données et un peu d'AJAX ici et là, sans lire des documentations massives de frameworks professionnels très complexes, alors MINI pourrait être très utile pour vous. MINI est facile à installer, fonctionne presque partout et ne rend pas les choses plus compliquées que nécessaire.
Pour une introduction plus approfondie à MINI, jetez un œil à cet article de blog : MINI, une application PHP barebone extrêmement simple.
MINI a un petit frère, nommé TINY. C'est similaire à MINI, mais fonctionne sans mod_rewrite dans presque tous les environnements. Ne convient pas aux sites en direct, mais convient pour un prototypage rapide.
MINI a également un grand frère, nommé MINI2. C'est encore plus simple, a été construit en utilisant Slim et possède des fonctionnalités intéressantes comme la compilation SASS, Twig, etc.
MINI3 est le successeur de MINI, utilisant la structure d'application native MINI1 d'origine (sans Slim sous le capot), mais avec un chargement automatique PSR-4 approprié, plusieurs classes de modèles et de véritables espaces de noms.
Si vous utilisez Vagrant pour votre développement, vous pouvez installer MINI en un seul clic (ou une commande sur la ligne de commande) [Vagrant doc]. MINI est livré avec un fichier de démonstration Vagrant (définit votre boîte Vagrant) et une démo bootstrap.sh qui installe automatiquement Apache, PHP, MySQL, PHPMyAdmin, git et Composer, définit un mot de passe choisi dans MySQL et PHPMyadmin et même dans le code de l'application, télécharge les dépendances de Composer, active mod_rewrite et modifie les paramètres Apache, télécharge le code depuis GitHub et exécute les instructions SQL de démonstration (pour les données de démonstration). C'est 100% automatique, vous vous retrouverez après +/- 5 minutes avec une installation entièrement opérationnelle de MINI2 dans une boîte Ubuntu 14.04 LTS Vagrant.
Pour ce faire, placez Vagrantfile
et bootstrap.sh
de _vagrant
dans un dossier (et rien d'autre). vagrant box add ubuntu/focal64
pour ajouter Ubuntu 20.04 LTS 64 bits à Vagrant (sauf si vous l'avez déjà), puis vagrant up
pour exécuter la boîte. Une fois l'installation terminée, vous pouvez utiliser directement l'application de démonstration entièrement installée sur 192.168.33.44
(vous pouvez modifier cela dans le Vagrantfile). Comme il ne s'agit que d'un environnement de démonstration rapide, le mot de passe root MySQL et le mot de passe root PHPMyAdmin sont définis sur 12345678
, le projet est installé dans /var/www/html/myproject
. Vous pouvez changer cela à coup sûr dans bootstrap.sh
. Arrêtez la boîte avec vagrant halt
Vous pouvez installer MINI, y compris Apache, MySQL, PHP et PHPMyAdmin, mod_rewrite, Composer, tous les paramètres nécessaires et même les mots de passe dans le fichier de configuration en téléchargeant simplement un fichier et en l'exécutant, l'ensemble de l'installation s'exécutera à 100 % automatiquement. Retrouvez le tutoriel dans cet article de blog : Installer MINI en 30 secondes dans Ubuntu 14.04 LTS
application/config/config.php
_install/
(avec PHPMyAdmin par exemple).MINI fonctionne sans autre configuration. Vous pouvez également le mettre dans un sous-dossier, il fonctionnera sans aucune configuration supplémentaire. Peut-être utile : Un tutoriel simple sur Comment installer LAMPP (Linux, Apache, MySQL, PHP, PHPMyAdmin) sur Ubuntu 14.04 LTS et pareil pour Ubuntu 12.04 LTS.
server {
server_name default_server _; # Listen to any servername
listen [::]:80;
listen 80 ;
root /var/www/html/myproject/public;
location / {
index index.php;
try_files / $uri / $uri / /index.php?url= $uri ;
}
location ~ .(php)$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params;
}
}
Une discussion plus approfondie sur les configurations nginx peut être trouvée ici.
Le script utilise mod_rewrite et bloque tout accès à tout ce qui se trouve en dehors du dossier /public. Votre dossier/fichiers .git, les fichiers temporaires du système d'exploitation, le dossier d'application et tout le reste ne sont pas accessibles (lorsqu'ils sont correctement configurés). Pour les requêtes de base de données, PDO est utilisé, donc pas besoin de penser à l'injection SQL (sauf si vous utilisez des versions MySQL extrêmement obsolètes).
MINI est livré avec un petit outil de débogage PDO personnalisé (trouvez le code dans application/libs/helper.php), essayant d'émuler vos instructions PDO-SQL. C'est extrêmement simple à utiliser :
$ sql = " SELECT id, artist, track, link FROM song WHERE id = :song_id LIMIT 1 " ;
$ query = $ this -> db -> prepare ( $ sql );
$ parameters = array ( ' :song_id ' => $ song_id );
echo Helper:: debugPDO ( $ sql , $ parameters );
$ query -> execute ( $ parameters );
Le projet a été écrit en PHP5, mais avec la sortie de PHP7, il n'est plus possible de nommer une classe "Error" car PHP lui-même a désormais une classe Error interne. Renommer était la solution la plus simple, comparée à d'autres options comme "ErrorController", etc. qui ajouteraient de nouveaux problèmes comme les noms de fichiers en majuscules, etc. (qui ne fonctionneraient pas correctement sur certaines configurations).
Ce projet est sous licence MIT. Cela signifie que vous pouvez l'utiliser et le modifier gratuitement dans des projets privés ou commerciaux.
Et au fait, je blogue également sur Dev Metal.
Le chemin URL de l'application se traduit directement par les contrôleurs (= fichiers) et leurs méthodes à l'intérieur de l'application/des contrôleurs.
example.com/home/exampleOne
fera ce que dit la méthode exampleOne() dans application/controllers/home.php.
example.com/home
fera ce que dit la méthode index() dans application/controllers/home.php.
example.com
fera ce que dit la méthode index() dans application/controllers/home.php (repli par défaut).
example.com/songs
fera ce que dit la méthode index() dans application/controllers/songs.php.
example.com/songs/editsong/17
fera ce que dit la méthode editsong() dans application/controllers/songs.php et lui passera 17
comme paramètre.
Cela s’explique tout seul, non ?
Regardons la méthode exampleOne() dans le contrôleur home (application/controllers/home.php) : cela montre simplement l'en-tête, le pied de page et la page example_one.php (dans vues/home/). Par intention la plus simple et native possible.
public function exampleOne ()
{
// load view
require APP . ' views/_templates/header.php ' ;
require APP . ' views/home/example_one.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Examinons la méthode index() dans le contrôleur de chansons (application/controllers/songs.php) : similaire à exampleOne, mais ici, nous demandons également des données. Encore une fois, tout est extrêmement réduit et simple : $this->model->getAllSongs() appelle simplement la méthode getAllSongs() dans application/model/model.php.
public function index ()
{
// getting all songs and amount of songs
$ songs = $ this -> model -> getAllSongs ();
$ amount_of_songs = $ this -> model -> getAmountOfSongs ();
// load view. within the view files we can echo out $songs and $amount_of_songs easily
require APP . ' views/_templates/header.php ' ;
require APP . ' views/songs/index.php ' ;
require APP . ' views/_templates/footer.php ' ;
}
Pour une extrême simplicité, toutes les méthodes de gestion des données se trouvent dans application/model/model.php. Ce n’est certainement pas vraiment professionnel, mais la mise en œuvre la plus simple. Jetez un œil à quoi ressemble getAllSongs() dans model.php : un PDO pur et super simple.
public function getAllSongs ()
{
$ sql = " SELECT id, artist, track, link FROM song " ;
$ query = $ this -> db -> prepare ( $ sql );
$ query -> execute ();
return $ query -> fetchAll ();
}
Le résultat, ici $songs, peut alors facilement être utilisé directement dans les fichiers de vue (dans ce cas application/views/songs/index.php, dans un exemple simplifié) :
<tbody>
<?php foreach ( $ songs as $ song ) { ?>
<tr>
<td> <?php if ( isset ( $ song -> artist )) echo htmlspecialchars ( $ song -> artist , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
<td> <?php if ( isset ( $ song -> track )) echo htmlspecialchars ( $ song -> track , ENT_QUOTES , ' UTF-8 ' ); ?> </td>
</tr>
<?php } ?>
</tbody>
MINI est le successeur de php-mvc. Comme php-mvc ne fournissait pas une véritable structure MVC (et plusieurs personnes s'en sont plaintes - ce qui est tout à fait vrai !), j'ai renommé et reconstruit le projet.
... MINI n'est qu'un simple outil d'aide que j'ai créé pour mon travail quotidien, tout simplement parce qu'il était beaucoup plus facile à configurer et à gérer que de vrais frameworks. Pour le travail quotidien en agence, le prototypage rapide et les projets frontend, c'est tout à fait correct, fait le travail et il n'y a absolument aucune raison de discuter pourquoi c'est "de la merde par rapport à Laravel", pourquoi il ne suit pas plusieurs principes MVC ou pourquoi il n'y a pas de support personnel non rémunéré. ou pas de traduction russe ou des trucs bizarres similaires. La lutte contre les projets Open-Source (et leurs auteurs) a vraiment atteint des dimensions insensées.
J'ai écrit ceci gratuitement, volontairement, pendant mon temps libre et je l'ai téléchargé sur GitHub pour le partager. C'est totalement gratuit, pour un usage privé et commercial. Si vous ne l’aimez pas, ne l’utilisez pas. Si vous voyez des problèmes, écrivez un ticket (et si vous êtes vraiment cool : je suis très reconnaissant pour tout engagement !). Mais ne dénigrez pas, ne vous plaignez pas, ne détestez pas. Seules les mauvaises personnes le font.
Veuillez vous engager dans la branche de développement (qui contient la version en développement), et non dans la branche master (qui contient la version testée et stable).
décembre 2002
Août 2016
Février 2015
décembre 2014
novembre 2014
Octobre 2014
septembre 2014
Août 2014
juin 2014
avril 2014
janvier 2014
Soutenez le projet en louant un serveur chez DigitalOcean ou en offrant simplement un café sur BuyMeACoffee.com. Merci! :)