Mini PHP Framework - Crie um aplicativo rapidamente com a estrutura MVC padrão.
Leia na Versão em Português (PT-BR): Português Pt-Br-Br
Por que usar codemini?
Se você não deseja usar uma estrutura complexa devido a quaisquer motivos e não deseja ser amarrado, então Codemini é opção para você.
O Codemini é muito simples de usar, você pode executar seu projeto na pasta public como Laravel, CodeIgniter 4 ou se estiver usando o host compartilhado, basta copiar index.php e .htaccess da pasta pública na pasta raiz e todas as coisas vão funcionar bem.
Você pode usar facilmente outros pacotes do packagist.org em seu projeto, basta executar composer require <vendor>/<package> e o codemini compreenderá todos os pacotes que você instalou.
Ferramentas de terceiros como WAMP ou XAMPP
Enquanto triste, se você estiver usando host compartilhado ou usando ferramentas como WAMP ou XAMPP, basta copiar index.php e .htaccess da pasta pública na pasta raiz e todas as coisas funcionarão bem.
Exemplo:
www ou htdocsindex.php e .htaccess da pasta pública na pasta raizNota: Remova a pasta pública se quiser
Por que fazer isso?
Porque quando você está usando ferramentas como WAMP ou XAMPP, a Documentroot of Apache é a pasta Point to Root WWW (WAMP) ou HTDOCS (XAMPP) e não para a Framework Public.
Esta regra é válida não apenas para Codemini, mas também codeigniter 4, Laravel etc. é a maneira como as estruturas funcionam.
1- Se você deseja instalar como projeto de compositor, execute: composer create-project --prefer-dist codemini/framework name-folder-of-you-project
2- Open Terminal e Run Cli-Tools: php cli-tools serve
Opcional: execute com o servidor interno do PHP, vá para a pasta public e execute: php -S localhost:8080
NOTA: Nesse caso, não é necessário executar a instalação do compositor porque o compositor Create-Project já faz isso por você.
1 - Se você deseja instalar com o Git Clone , execute: git clone https://github.com/fabriciopolito/Codemini.git ou download "Download Zip" e extraem arquivos.
2 - Execute o compositor (exigido) na pasta do projeto raiz, onde contém composer.json para criar arquivos automáticos .
composer installphp composer.phar install 3- Open Terminal e Run Cli-Tools: php cli-tools serve
Opcional: execute com o servidor interno do PHP, vá para a pasta public e execute: php -S localhost:8080
Seu index.php deve se parecer com o seguinte:
<?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 não possui muitas configurações.
Modificar arquivos de padrões:
Config.php - define config para base_url, mysql, ambiente, fuso horário etc.Exemplo:
$ 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: O App File/Config.php possui documentação completa cada opção
Constants.php - Defina o nome do seu projeto e o local dos arquivos... e crie seus controladores, visualizações e modelos!
Controladores / Home.php
php cli-tools create-controller HomeSaída: ./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> " ;
}
} Views / 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 ProductsSaída: ./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') Retorne o nome especificado da configuração. Exemplo: <?php echo configItem('base_url') ?>
&getInstance() Return Controller Object Instância
Como usar o Librarie no controlador?
É muito simples! Basta carregá -lo com instrução use e a biblioteca estará disponível para você.
Exemplo:
<?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 ());
}
}As bibliotecas básicas de Codemini
Input - ajude você a manipular Get, Post, Arquivoecho Input::get('email')echo Input::post('email')echo Input::file('userfile')echo Input::all()Redirect - redirecionar o usuário para outro localecho Redirect::to(configItem('base_url') . 'login/index')Session - ajudá -lo a manipular os dados da sessãoSession::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 - ajudá -lo a validar dadosValidator::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: as bibliotecas possuem documentação completa em cada opção.
Você é grátis! Portanto, por exemplo, crie uma pasta Helpers em ./app/ e um arquivo Upload.php e a única coisa que você precisa fazer é definir o espaço para nome adequado para a carga automática.
Exemplo ./app/Helpers/Upload.php :
<?php
namespace App Helpers ;
class Upload
{
public static function setUpload ( $ file )
{
//The logic code here...
}
}E então use -o em qualquer controlador desta maneira:
Exemplo ./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 ' ]);
}
}É muito simples! Basta executar o compositor requer comando e carregá -lo da mesma maneira acima.
Exemplo 1: composer require plasticbrain/php-flash-messages
Exemplo 2: composer require monolog/monolog
Fabricio pólito - [email protected] - https://github.com/fabriciopolito
Obrigado usando isso?
Codemini está licenciado sob a licença do MIT ✔️