Mini Framework PHP - Créez une application rapide avec la structure MVC standard.
Leia na versão em Português (Pt-Br): Português Pt-Br
Pourquoi utiliser Codemini?
Si vous ne voulez pas utiliser une structure complexe pour des raisons et que vous ne voulez pas être attachée, donc Codemini est une option pour vous.
Codemini est très simple à utiliser, vous pouvez exécuter votre projet dans un dossier public comme Laravel, Codeigniter 4 ou si vous utilisez l'hôte partagé, copiez simplement index.php et .htaccess à partir du dossier public dans le dossier racine et tout ce qui va bien fonctionner.
Vous pouvez utiliser facilement d'autres packages de packagist.org dans votre projet, il suffit d'exécuter composer require <vendor>/<package> et Codemini comprendra tous les packages que vous avez installés.
Outils tiers comme WAMP ou XAMPP
Comme je suis triste ci-dessus, si vous utilisez l'hôte partagé ou utilisez des outils comme WAMP ou XAMPP, copiez simplement index.php et .htaccess du dossier public dans le dossier racine et tout cela va bien fonctionner.
Exemple:
www ou htdocsindex.php et .htaccess du dossier public dans le dossier racineRemarque: supprimez le dossier public si vous voulez
Pourquoi le faire?
Parce que lorsque vous utilisez des outils comme WAMP ou XAMPP, le documentroot d'Apache est le dossier root de point vers www (WAMP) ou HTDOCS (XAMPP) et non dans le dossier public de Framework.
Cette règle est valable non seulement pour Codemini mais Codeigniter 4, Laravel, etc. C'est le fonctionnement des frameworks.
1 - Si vous souhaitez installer comme projet composé, exécutez: composer create-project --prefer-dist codemini/framework name-folder-of-you-project
2 - Open Terminal and Run CLI-Tools: php cli-tools serve
Facultatif: exécutez avec un serveur intégré PHP, accédez au dossier public et exécutez: php -S localhost:8080
Remarque: Dans ce cas, il n'est pas nécessaire d'exécuter l'installation du compositeur car le compositeur create-project le fait déjà pour vous.
1 - Si vous souhaitez installer avec Git Clone , exécutez: git clone https://github.com/fabriciopolito/Codemini.git ou téléchargez "Télécharger ZIP" et extraire des fichiers.
2 - Exécutez Composer (requis) dans le dossier Root Project où contiennent Composer.json pour créer des fichiers Autoload .
composer installphp composer.phar install 3 - Open Terminal and Run CLI-Tools: php cli-tools serve
Facultatif: exécutez avec un serveur intégré PHP, accédez au dossier public et exécutez: php -S localhost:8080
Votre index.php devrait ressembler à ceci:
<?php
$ dirname = strtolower ( basename ( __DIR__ ));
if ( $ dirname == ' public ' ) {
require_once ' ../app/Init.php ' ;
} else {
require_once ' app/Init.php ' ;
}
try {
$ myAPP = new Init ();
} catch ( Exception $ e ) {
$ e -> getMessage ();
} //end try...catch Remarque: Codemini n'a pas beaucoup de configurations.
Modifier les fichiers de normes:
Config.php - définir la configuration à base_url, mysql, environnement, fuseau horaire, etc.Exemple:
$ config [ ' base_url ' ] = ' http://localhost:8080/ ' ;
$ config [ ' environment ' ] = ' development ' ;
$ config [ ' mysql ' ] = [
' host ' => ' localhost ' ,
' dbname ' => ' codemini_tests ' ,
' username ' => ' root ' ,
' password ' => '' ,
' charset ' => ' utf8 ' ,
' display_error ' => ( $ config [ ' environment ' ] == ' development ' ) ? true : false
];
$ config [ ' session_name ' ] = ' MY_Session_name_ ' ;
$ config [ ' timezone ' ] = ' America/Sao_Paulo ' ;
$ config [ ' page_not_found ' ] = ' PageNotFound@index ' ;
$ config [ ' view_extension ' ] = ' .phtml ' ;Remarque: le fichier app / config.php a une documentation complète chaque option
Constants.php - Définissez le nom de votre projet et l'emplacement de vos fichiers... et créez vos contrôleurs, vues et modèles!
Contrôleurs / Home.php
php cli-tools create-controller HomeSortie: ./app/controllers/home.php
<?php
namespace App Controllers ;
use Codemini Core Controller ;
use Codemini Core Request ;
class Home extends Controller{
public function __construct (){
parent :: __construct ();
}
public function index ( $ args = "" ){
//Data to view
//Example: $this->view->data = ['php', 'js', 'nodejs', 'mongodb', 'css'];
//Load view
//$this->view('template_name');
echo " Controller name: " . Request:: getController () . " <br> " ;
echo " Method name: " . Request:: getMethod () . " <br> " ;
}
} Vues / Template/index.phtml
<!doctype html >
< html lang =" en " >
< head >
<!-- Required meta tags -->
< meta charset =" utf-8 " >
< meta name =" viewport " content =" width=device-width, initial-scale=1, shrink-to-fit=no " >
< base href =" <?php echo $config['base_url'] ?> " >
<!-- Bootstrap CSS -->
< link rel =" stylesheet " href =" https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css " integrity =" sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh " crossorigin =" anonymous " >
< title > Application name </ title >
</ head >
< body >
< ?php
print ' < pre > ';
print_r($this- > view- > data);
print ' </ pre > ';
? >
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
< script src =" https://code.jquery.com/jquery-3.4.1.slim.min.js " integrity =" sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n " crossorigin =" anonymous " > </ script >
< script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js " integrity =" sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo " crossorigin =" anonymous " > </ script >
< script src =" https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js " integrity =" sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6 " crossorigin =" anonymous " > </ script >
</ body >
</ html > Modèles / Products.php
php cli-tools create-model ProductsSortie: ./app/models/products.php
<?php
namespace App Models ;
use Codemini Core Model ;
class Products extends Model{
protected $ table = ' table_name ' ;
/**
* Construct the parent model class for get instance '$this->db' PDO and the
* SIMPLE QUERY BUILDER functions
*/
public function __construct ()
{
parent :: __construct ();
}
/**
* Example 1 with VERY SIMPLE query builder
*/
public function allProducts ( $ orderBy = " ORDER BY `name` ASC " ){
$ sql = " SELECT * FROM ` { $ this -> table } ` { $ orderBy }" ;
$ this -> query ( $ sql );
$ this -> execute ();
return $ this -> fetchAll ();
}
/**
* Example 2 with VERY SIMPLE query builder
*/
public function productById ( $ val )
{
$ sql = " SELECT * FROM ` { $ this -> table } ` WHERE `id` = :id " ;
$ this -> query ( $ sql );
$ this -> bind ( " :id " , $ val );
$ this -> execute ();
return $ this -> fetch ();
}
/**
* Example 3 with VERY SIMPLE query builder
*/
public function productsByPrice ( $ val )
{
$ sql = " SELECT * FROM ` { $ this -> table } ` WHERE `price` = :price " ;
$ this -> query ( $ sql );
$ this -> execute ([ " :price " => $ val ]);
return $ this -> fetchAll ();
}
/**
* Example 4 with MANUALLY statement $db
*/
public function productsByName ( $ val )
{
$ sql = " SELECT * FROM ` { $ this -> table } ` WHERE `name` = :name " ;
$ stmt = $ this -> db -> prepare ( $ sql );
$ stmt -> bindParam ( " :name " , $ val , PDO :: PARAM_STR );
$ stmt -> execute ();
return $ stmt -> fetch ();
}
} configItem('key') Renvoie le nom spécifié de configuration. Exemple: <?php echo configItem('base_url') ?>
&getInstance() Instance de retour du contrôleur de retour
Comment utiliser la bibliothèque dans le contrôleur?
C'est très simple! Chargez-le simplement avec des instructions use et la bibliothèque sera disponible pour vous.
Exemple:
<?php
namespace App Controllers ;
//IMPORTANT
// Don't forget to load with 'use' instruction
use Codemini Core Controller ;
use Codemini Libraries Input ;
class Teste extends Controller{
public function __construct (){
parent :: __construct ();
}
public function index ( $ args ){
//$_POST
$ email = Input:: post ( ' email ' );
$ password = Input:: post ( ' password ' );
//$_GET
$ email = Input:: get ( ' email ' );
$ password = Input:: get ( ' password ' );
//FILE
$ userfile = Input:: file ( ' userfile ' );
//ALL REQUEST
print_r ( $ allRequest = Input:: all ());
}
}Les bibliothèques de base de Codemini
Input - Aidez-vous à manipuler Get, Publier, Fichierecho Input::get('email')echo Input::post('email')echo Input::file('userfile')echo Input::all()Redirect - Redirigez l'utilisateur vers un autre emplacementecho Redirect::to(configItem('base_url') . 'login/index')Session - vous aider à manipuler les données de sessionSession::start()Session::set('logged_in', true)Session::set(array('user_id' => 1, 'logged_in' => true))Session::get('user_id')Session::has('logged_in')Session::all()Session::id()Session::regenerateId()Session::remove('user_id')Session::destroy()Validator - Aidez-vous à valider les donnéesValidator::getErrors()Validator::getMsg()Validator::setOpenTag('<p>')Validator::setCloseTag('</p>')Validator::required($val)Validator::isEmail($val)Validator::isUrl($val)Validator::isFloat($val)Validator::isInt($val)Validator::isBool($val)Validator::isIp($val)Validator::regex($val, '/[az]/i')Remarque: Les bibliothèques ont une documentation complète dans chaque option.
Vous êtes libre! Donc, par exemple, créez un Helpers de dossier dans ./app/ et un fichier Upload.php et la seule chose que vous devez faire est de définir l'espace de noms correctement pour la mise en scène.
Exemple ./app/Helpers/Upload.php :
<?php
namespace App Helpers ;
class Upload
{
public static function setUpload ( $ file )
{
//The logic code here...
}
}Puis l'utilisez dans n'importe quel contrôleur de cette manière:
Exemple ./app/Controllers/Home.php
<?php
namespace App Controllers ;
use Codemini Core Controller ;
// IMPORTANT:
// Don't forget load the helper librarie you have created
use App Helpers Upload ;
class Home extends Controller{
public function __construct (){
parent :: __construct ();
}
public function index ( $ args = "" ){
// call methods
Upload:: setUpload ( $ _FILE [ ' userfile ' ]);
}
}C'est très simple! Exécutez simplement le compositeur nécessite la commande et chargez-le de la même manière ci-dessus.
Exemple 1: composer require plasticbrain/php-flash-messages
Exemple 2: composer require monolog/monolog
Fabricio Pólito - [email protected] - https://github.com/fabriciopolito
Merci l'utiliser?
Codemini est autorisé sous la licence MIT ✔️