Mini PHP Framework - Создайте быстрое применение со стандартной структурой MVC.
Leia na versão em português (pt-br): português pt-br
Зачем использовать Codemini?
Если вы не хотите использовать сложную структуру по каким -либо причинам и не хотите быть привязанной к ней, так же для вас вариант Codemini.
Codemini очень прост в использовании, вы можете запустить свой проект в 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 of Apache является точкой к корневой папке www (WAMP) или HTDOCS (XAMPP), а не для общедоступной папки Framework.
Это правило действителен не только для Codemini, но и Codeigniter 4, Laravel и т. Д. Это способ работы фреймворков.
1- Если вы хотите установить в качестве проекта Composer, запустите: 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
Примечание. В этом случае нет необходимости запускать установку композитора, потому что композитор Create-Project уже делает это для вас.
1 - Если вы хотите установить с помощью клона GIT , запустите: git clone https://github.com/fabriciopolito/Codemini.git или скачать "скачать Zip" и извлечь файлы.
2 - Запустите Composer (требуется) в папке Project Root, где содержит 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 ' ;Примечание. File App/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 ());
}
}Основные библиотеки кодексов
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 лицензирован по лицензии MIT ✔