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 هو الذي يشير إلى مجلد الجذر www (WAMP) أو HTDOCS (XAMPP) وليس إلى المجلد العام للإطار.
هذه القاعدة صالحة ليس فقط لـ CodeMini ولكن Codeigniter 4 ، Laravel وما إلى ذلك. إنها الطريقة التي تعمل بها الأطر.
1- إذا كنت ترغب في التثبيت كمشروع ملحن ، قم بتشغيل: 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
ملاحظة: في هذه الحالة ، ليس من الضروري تشغيل التثبيت الملحن لأن الملحن يقوم بإنشاء مشروع يقوم به بالفعل من أجلك.
1 - إذا كنت ترغب في التثبيت باستخدام git clone ، قم بتشغيل: git clone https://github.com/fabriciopolito/Codemini.git أو تنزيل "تنزيل zip" واستخراج الملفات.
2 - تشغيل الملحن (مطلوب) في مجلد مشروع الجذر حيث يحتوي على 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 - حدد التكوين إلى 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 وستكون المكتبة متاحة لك.
مثال:
<?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 - تساعدك على معالجة Get ، Post ، Fileecho 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 ' ]);
}
}انها بسيطة جدا! فقط قم بتشغيل الملحن يتطلب الأمر وتحميله بنفس الطريقة أعلاه.
مثال 1: composer require plasticbrain/php-flash-messages
مثال 2: composer require monolog/monolog
Fabricio Pólito - [email protected] - https://github.com/fabriciopolito
شكرا استخدامه؟
Codemini مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا ✔