Mini Marco PHP: cree una aplicación rápida con estructura MVC estándar.
Leia na versão em Português (PT-Br): Português PT-Br
¿Por qué usar Codemini?
Si no desea utilizar una estructura compleja debido a cualquier motivo y no quiere que se ate, por lo que Codemini es una opción para usted.
Codemini es muy sencillo de usar, puede ejecutar su proyecto en la carpeta public como Laravel, CodeIgniter 4 o si está utilizando host compartido, simplemente copie index.php y .htaccess desde la carpeta pública en la carpeta raíz y todas las cosas funcionan bien.
Puede usar fácilmente otros paquetes de Packagist.org en su proyecto, simplemente ejecute composer require <vendor>/<package> y Codemini comprenderá todos los paquetes que ha instalado.
Herramientas de terceros como Wamp o XAMPP
Como me entristece arriba, si está utilizando host compartido o utilizando herramientas como WAMP o XAMPP, simplemente copie index.php y .htaccess desde la carpeta pública en la carpeta raíz y todas las cosas funcionan bien.
Ejemplo:
www o htdocsindex.php y .htaccess desde la carpeta pública en la carpeta raízNota: Eliminar la carpeta pública si lo desea
¿Por qué hacerlo?
Porque cuando está utilizando herramientas como WAMP o XAMPP, la raíz de documentos de Apache es la carpeta de raíz www (wamp) o htdocs (xAMPP) y no a la carpeta pública del marco.
Esta regla es válida no solo para Codemini sino también Codeigniter 4, Laravel, etc. Es la forma en que funcionan los marcos.
1- Si desea instalar como proyecto compositor, ejecute: composer create-project --prefer-dist codemini/framework name-folder-of-you-project
2- Terminal abierto y ejecute las herramientas de CLI: php cli-tools serve
Opcional: Ejecutar con el servidor incorporado PHP, vaya a la carpeta public y ejecute: php -S localhost:8080
Nota: En este caso, no es necesario ejecutar la instalación del compositor porque el proyecto de creación del compositor ya lo hace por usted.
1 - Si desea instalar con Git Clone , ejecute: git clone https://github.com/fabriciopolito/Codemini.git o descargue "descargar zip" y extraer archivos.
2 - Ejecute el compositor (requerido) en la carpeta del proyecto raíz donde contenga composer.json para crear archivos de autoload .
composer installphp composer.phar install 3- Terminal abierto y ejecute Tools CLI: php cli-tools serve
Opcional: Ejecutar con el servidor incorporado PHP, vaya a la carpeta public y ejecute: php -S localhost:8080
Su index.php debería verse así:
<?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 Nota: Codemini no tiene muchas configuraciones.
Modificar archivos de estándares:
Config.php : definir config a base_url, mysql, entorno, zona horaria, etc.Ejemplo:
$ 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 ' ;Nota: El archivo app/config.php tiene documentación completa en cada opción
Constants.php : defina la ubicación del nombre y los archivos de su proyecto... ¡y cree su tuyo controladores, vistas y modelos!
Controladores / Home.php
php cli-tools create-controller HomeSalida: ./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> " ;
}
} Vistas / 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 > Modelos / Products.php
php cli-tools create-model ProductsSalida: ./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') Devuelve el nombre de configuración especificado. Ejemplo: <?php echo configItem('base_url') ?>
&getInstance() return Controller Object Instance
¿Cómo usar bibliotecas en el controlador?
¡Es muy simple! Simplemente cargalo con instrucciones use y la biblioteca estará disponible para usted.
Ejemplo:
<?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 ());
}
}Las bibliotecas básicas de Codemini
Input : ayudarlo a manipular GET, POST, Archivoecho Input::get('email')echo Input::post('email')echo Input::file('userfile')echo Input::all()Redirect : redirigir el usuario a otra ubicaciónecho Redirect::to(configItem('base_url') . 'login/index')Session : ayudarlo a manipular los datos de la sesiónSession::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 : ayudarlo a validar datosValidator::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')Nota: Las bibliotecas tienen documentación completa en cada opción.
¡Eres libre! Entonces, el ejemplo, cree un Helpers de carpeta en ./app/ y un archivo Upload.php y lo único que tiene que hacer es establecer el espacio de nombres correctamente para la autoinformación.
Ejemplo ./app/Helpers/Upload.php :
<?php
namespace App Helpers ;
class Upload
{
public static function setUpload ( $ file )
{
//The logic code here...
}
}Y luego úselo de esta manera:
Ejemplo ./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 ' ]);
}
}¡Es muy simple! Simplemente ejecute el compositor requerir el comando y cargarlo de la misma manera anterior.
Ejemplo 1: composer require plasticbrain/php-flash-messages
Ejemplo 2: composer require monolog/monolog
Fabricio Pólito - [email protected] - https://github.com/fabriciopolito
Gracias a usarlo?
Codemini tiene licencia bajo la licencia MIT ✔️