MINI PHPフレームワーク - 標準のMVC構造を使用してすばやくアプリケーションを作成します。
Leia naversãoememportuguês(pt-br):portuguêspt-br
なぜコーデミニを使うのですか?
理由のために複雑な構造を使用したくない場合、それを縛られたくない場合は、Codeminiが選択肢です。
Codeminiは非常に簡単に使用できます。ProjetをLaravel、Codeigniter 4などのpublicフォルダーで実行するか、共有ホストを使用している場合は、Public FolderからRoot FolderにCopy index.phpと.htaccess使用しています。
packagist.orgの他のパッケージを簡単にプロジェクトに使用できます。実行するcomposer require <vendor>/<package> 、Codeminiはインストールしたすべてのパッケージを理解します。
WAMPやXAMPPなどのサードパーティツール
上記の悲しいように、共有ホストを使用している場合、またはWAMPやXAMPPなどのツールを使用している場合は、パブリックフォルダーからindex.phpと.htaccessルートフォルダーにコピーするだけで、すべてのものがうまく機能します。
例:
wwwまたはhtdocsにコピーしますindex.phpと.htaccessをコピー注:必要に応じてパブリックフォルダーを削除します
なぜそれをするのですか?
WAMPやXAMPPなどのツールを使用している場合、ApacheのDocumentRootはルートフォルダーWWW(WAMP)またはHTDOCS(XAMPP)のポイントであり、フレームワークのパブリックフォルダーではありません。
このルールは、Codeminiだけでなく、Codeigniter 4、Laravelなどで有効です。これは、フレームワークの動作方法です。
1- Composer Projectとしてインストールする場合は、実行: 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 Create-Projectがすでにあなたのためにそれを行っているため、Composerインストールを実行する必要はありません。
1- gitクローンでインストールする場合は、 git clone https://github.com/fabriciopolito/Codemini.gitを実行するか、「zipをダウンロード」してファイルを抽出します。
2 -Autoloadファイルを作成するためにComposer.jsonを含むルートプロジェクトフォルダーでComposer(必須)を実行します。
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、環境、timezoneなどにconfigを定義する例:
$ 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 >Models / 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() Return Controllerオブジェクトインスタンス
コントローラーで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、fileを操作するのに役立ちます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')注:ライブラリには、各オプションに完全なドキュメントがあります。
あなたは自由です!たとえば、 ./app/にフォルダーHelpersを作成し、ファイルUpload.php作成し、しなければならないことは、Autoloadingの適切な名前空間を設定することだけです。
例./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
FabricioPólito [email protected] -https://github.com/fabriciopolito
それを使ってくれてありがとう?
Codeminiは、MITライセンスの下でライセンスを取得しています