Mini PHP Framework - Buat aplikasi dengan cepat dengan struktur MVC standar.
Leia Na Versão Em Português (PT-BR): Português PT-BR
Mengapa Menggunakan Codemini?
Jika Anda tidak ingin menggunakan struktur yang kompleks karena alasan apa pun dan tidak ingin diikat, jadi Codemini adalah pilihan untuk Anda.
Codemini sangat mudah digunakan, Anda dapat menjalankan projet di folder public seperti Laravel, CodeIgniter 4 atau jika Anda menggunakan host bersama, cukup salin index.php dan .htaccess dari folder publik ke folder root dan semua hal akan berfungsi dengan baik.
Anda dapat menggunakan paket lain yang mudah dari packagist.org ke dalam proyek Anda, cukup jalankan composer require <vendor>/<package> dan codemini akan memahami semua paket yang telah Anda instal.
Alat pihak ketiga seperti Wamp atau Xampp
Saat saya sedih di atas, jika Anda menggunakan host bersama atau menggunakan alat seperti Wamp atau XAMPP, cukup salin index.php dan .htaccess dari folder publik ke folder root dan semua hal akan bekerja dengan baik.
Contoh:
www atau htdocsindex.php dan .htaccess dari folder publik ke folder rootCatatan: Hapus folder publik jika Anda mau
Mengapa melakukannya?
Karena ketika Anda menggunakan alat seperti Wamp atau XAMPP, dokumen Apache menunjuk ke folder root www (Wamp) atau HTDOCS (XAMPP) dan tidak ke folder kerangka kerja publik.
Aturan ini valid tidak hanya untuk Codemini tetapi CodeIgniter 4, Laravel dll. Ini adalah cara kerangka kerja kerangka kerja.
1- Jika Anda ingin menginstal sebagai Proyek Komposer, Jalankan: composer create-project --prefer-dist codemini/framework name-folder-of-you-project
2- Terminal Terbuka dan Jalankan CLI-Tools: php cli-tools serve
Opsional: Jalankan dengan server bawaan PHP, buka folder public dan jalankan: php -S localhost:8080
Catatan: Dalam hal ini tidak perlu menjalankan instalasi komposer karena proyek create composer sudah melakukannya untuk Anda.
1 - Jika Anda ingin menginstal dengan git clone , jalankan: git clone https://github.com/fabriciopolito/Codemini.git atau unduh "unduh zip" dan ekstrak file.
2 - Jalankan komposer (diperlukan) di folder proyek root di mana berisi composer.json untuk membuat file autoload .
composer installphp composer.phar install 3- Terminal Terbuka dan Jalankan CLI-Tools: php cli-tools serve
Opsional: Jalankan dengan server bawaan PHP, buka folder public dan jalankan: php -S localhost:8080
Index.php Anda seharusnya terlihat seperti ini:
<?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 Catatan: Codemini tidak memiliki banyak konfigurasi.
Ubah File Standar:
Config.php - Tentukan konfigurasi ke base_url, mysql, lingkungan, zona waktu dllContoh:
$ 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 ' ;Catatan: Aplikasi File/Config.php memiliki dokumentasi lengkap setiap opsi
Constants.php - Tentukan nama proyek dan lokasi file Anda... dan buat pengontrol, tampilan, dan model Anda!
Pengontrol / Home.php
php cli-tools create-controller HomeOutput: ./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 > Model / Products.php
php cli-tools create-model ProductsOutput: ./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') Mengembalikan nama yang ditentukan konfigurasi. Contoh: <?php echo configItem('base_url') ?>
&getInstance() Return Controller Object Instance
Bagaimana cara menggunakan librarie di controller?
Ini sangat sederhana! Muat saja dengan instruksi use dan librarie akan tersedia untuk Anda.
Contoh:
<?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 ());
}
}Perpustakaan Dasar Codemini
Input - Bantu Anda memanipulasi Get, Posting, Fileecho Input::get('email')echo Input::post('email')echo Input::file('userfile')echo Input::all()Redirect - Redirect User ke lokasi lainecho Redirect::to(configItem('base_url') . 'login/index')Session - Membantu Anda memanipulasi data sesiSession::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 - Membantu Anda memvalidasi dataValidator::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')Catatan: Perpustakaan memiliki dokumentasi lengkap di setiap opsi.
Anda bebas! Jadi misalnya, buat Helpers folder di ./app/ dan file Upload.php dan satu -satunya hal yang harus Anda lakukan adalah mengatur namespace yang benar untuk autoloading.
Contoh ./app/Helpers/Upload.php :
<?php
namespace App Helpers ;
class Upload
{
public static function setUpload ( $ file )
{
//The logic code here...
}
}Dan kemudian gunakan di pengontrol apa pun dengan cara ini:
Contoh ./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 ' ]);
}
}Ini sangat sederhana! Cukup jalankan komposer memerlukan perintah dan memuatnya dengan cara yang sama di atas.
Contoh 1: composer require plasticbrain/php-flash-messages
Contoh 2: composer require monolog/monolog
Fabricio Pólito - [email protected] - https://github.com/fabriciopolito
Terima kasih menggunakannya?
Codemini dilisensikan di bawah lisensi MIT ✔️