Mini PHP Framework - สร้างแอปพลิเคชันอย่างรวดเร็วด้วยโครงสร้าง MVC มาตรฐาน
Leia na versão em português (PT-BR): Português PT-BR
ทำไมต้องใช้ Codemini?
หากคุณไม่ต้องการใช้โครงสร้างที่ซับซ้อนเนื่องจากเหตุผลใด ๆ และไม่ต้องการถูกผูกไว้ดังนั้น Codemini จึงเป็นตัวเลือกสำหรับคุณ
Codemini ใช้งานง่ายมากคุณสามารถเรียกใช้ projet ของคุณในโฟลเดอร์ public เช่น Laravel, CodeIgniter 4 หรือหากคุณใช้โฮสต์ที่ใช้ร่วมกันเพียงแค่คัดลอก index.php และ .htaccess จากโฟลเดอร์สาธารณะไปยังโฟลเดอร์รูทและทุกสิ่งจะทำงานได้ดี
คุณสามารถใช้แพ็คเกจอื่น ๆ ได้อย่างง่ายดายจาก Packagist.org ในโครงการของคุณเพียงแค่เรียกใช้ composer require <vendor>/<package> และ Codemini จะเข้าใจแพ็คเกจทั้งหมดที่คุณติดตั้ง
เครื่องมือของบุคคลที่สามเช่น WAMP หรือ XAMPP
อย่างที่ฉันเศร้าข้างต้นหากคุณใช้โฮสต์ที่ใช้ร่วมกันหรือใช้เครื่องมือเช่น WAMP หรือ XAMPP เพียงแค่คัดลอก index.php และ .htaccess จากโฟลเดอร์สาธารณะไปยังโฟลเดอร์รูทและทุกสิ่งจะทำงานได้ดี
ตัวอย่าง:
www หรือ htdocsindex.php และ .htaccess จากโฟลเดอร์สาธารณะลงในโฟลเดอร์รูทหมายเหตุ: ลบโฟลเดอร์สาธารณะหากคุณต้องการ
ทำไม?
เพราะเมื่อคุณใช้เครื่องมือเช่น WAMP หรือ XAMPP DocumentRoot ของ Apache จะชี้ไปที่ Root Folder WWW (WAMP) หรือ HTDOCS (XAMPP) และไม่ใช่โฟลเดอร์สาธารณะของเฟรมเวิร์ก
กฎนี้ใช้ได้ไม่เพียง แต่สำหรับ codemini แต่ codeigniter 4, laravel ฯลฯ มันเป็นวิธีการทำงานของเฟรมเวิร์ก
1- หากคุณต้องการติดตั้งเป็นโครงการนักแต่งเพลง Run: composer create-project --prefer-dist codemini/framework name-folder-of-you-project
2- เปิดเทอร์มินัลและเรียกใช้ CLI-Tools: php cli-tools serve
ตัวเลือก: เรียกใช้กับเซิร์ฟเวอร์ในตัว PHP ไปที่โฟลเดอร์ public และเรียกใช้: php -S localhost:8080
หมายเหตุ: ในกรณีนี้ไม่จำเป็นต้องใช้การติดตั้ง Composer เนื่องจากนักแต่งเพลงสร้างโครงการทำเพื่อคุณแล้ว
1 - หากคุณต้องการติดตั้งด้วย git clone run: git clone https://github.com/fabriciopolito/Codemini.git หรือดาวน์โหลด "ดาวน์โหลด zip" และแยกไฟล์
2 - เรียกใช้ Composer (จำเป็น) ในโฟลเดอร์รูทโปรเจ็กต์ที่มี composer.json เพื่อสร้าง ไฟล์โหลดอัตโนมัติ
composer installphp composer.phar install 3- เทอร์มินัลเปิดและเรียกใช้ CLI-Tools: php cli-tools serve
ตัวเลือก: เรียกใช้กับเซิร์ฟเวอร์ในตัว PHP ไปที่โฟลเดอร์ public และเรียกใช้: php -S localhost:8080
index.php ของคุณควรมีลักษณะเช่นนี้:
<?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 หมายเหตุ: Codemini ไม่มีการกำหนดค่ามากมาย
แก้ไขไฟล์มาตรฐาน:
Config.php - กำหนด config to base_url, mysql, สภาพแวดล้อม, เขตเวลา ฯลฯตัวอย่าง:
$ 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 ' ;หมายเหตุ: แอพไฟล์/config.php มีเอกสารเต็มแต่ละตัวเลือก
Constants.php - กำหนดชื่อโครงการและตำแหน่งของคุณ... และสร้างตัวควบคุมมุมมองและรุ่นของคุณ!
คอนโทรลเลอร์ / Home.php
php cli-tools create-controller Homeเอาท์พุท: ./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> " ;
}
} มุมมอง / 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 > โมเดล / Products.php
php cli-tools create-model Productsเอาท์พุท: ./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') ส่งคืนชื่อที่ระบุ ตัวอย่าง: <?php echo configItem('base_url') ?>
&getInstance() อินสแตนซ์ออบเจ็กต์คอนโทรลเลอร์ส่งคืน
จะใช้ Librarie ในคอนโทรลเลอร์ได้อย่างไร?
มันง่ายมาก! เพียงโหลดด้วยคำแนะนำ use และ Librarie จะพร้อมใช้งานสำหรับคุณ
ตัวอย่าง:
<?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 ());
}
}ห้องสมุดพื้นฐานของ Codemini
Input - ช่วยคุณจัดการรับโพสต์ไฟล์echo Input::get('email')echo Input::post('email')echo Input::file('userfile')echo Input::all()Redirect - เปลี่ยนเส้นทางผู้ใช้ไปยังตำแหน่งอื่น ๆecho Redirect::to(configItem('base_url') . 'login/index')Session - ช่วยคุณจัดการข้อมูลเซสชันSession::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 - ช่วยคุณตรวจสอบข้อมูลValidator::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')หมายเหตุ: ไลบรารีมีเอกสารเต็มรูปแบบในแต่ละตัวเลือก
คุณเป็นอิสระ! ตัวอย่างเช่นสร้าง Helpers โฟลเดอร์ใน ./app/ และไฟล์ Upload.php และสิ่งเดียวที่คุณต้องทำคือตั้งค่าเนมสเปซที่เหมาะสมสำหรับการโหลดอัตโนมัติ
ตัวอย่าง ./app/Helpers/Upload.php :
<?php
namespace App Helpers ;
class Upload
{
public static function setUpload ( $ file )
{
//The logic code here...
}
}จากนั้นใช้ในคอนโทรลเลอร์ใด ๆ ด้วยวิธีนี้:
ตัวอย่าง ./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 ' ]);
}
}มันง่ายมาก! เพียงแค่เรียกใช้ Composer ต้องการคำสั่งและโหลดในลักษณะเดียวกับด้านบน
ตัวอย่างที่ 1: composer require plasticbrain/php-flash-messages
ตัวอย่างที่ 2: composer require monolog/monolog
Fabricio pólito - [email protected] - https://github.com/fabriciopolito
ขอบคุณใช้?
Codemini ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT ✔