DownloadKecik Framework
> PayPal: ![](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dony_cavalera_md%40yahoo%2ecom&lc=US&item_name=Dony%20Wahyu%20Isp&no_note=0¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest)
>
> Rekening Mandiri: 113-000-6944-858, Atas Nama: Dony Wahyu Isprananda
Merupakan framework dengan satu file system yang sangat sederhana, jadi ini bukan merupakan sebuah framework yang kompleks, tapi anda dapat membangun dan mengembangkan framework ini untuk menjadi sebuah framework yang kompleks. Framework ini mendukung MVC sederhana dimana anda masih harus mengcustom beberapa code untuk mendapatkan MVC yang kompleks, untuk Model hanya sebatas men-generate perintah SQL untuk INSERT , UPDATE dan DELETE saja, jadi untuk code pengeksekusian SQL nya tersebut silakan dibuat sendiri dengan bebas mau menggunakan library database manapun. Framework ini juga mendukung Composer, jadi bisa memudahkan anda untuk menambahkan sebuah library dari composer.
Nama : Framework Kecik
Pembuat : Dony Wahyu Isp
Versi : 1.1.0
Kota : Palembang
Cara Cepat Memulai
Langkah Pertama | Langkah Kedua | Langkah Ketiga | Langkah Keempat
Lebih Dalam
Mengenal Lebih Dalam | Header | Route | Config | Assets | Request | MVC | Controller | Middleware | Model | View | Url | Template
Langkah Pertama
top
Install composer pada sistem operasi anda, jika belum terinstall anda dapat mendownload melalui link Composer, setelah melakukan download dan installasi, selanjutnya anda perlu membuat file composer.json dengan isi file berikut ini.
{
"require": {
"dnaextrim/kecik": "1.1.*@dev"
}
}
Selanjutnya jalankan perintah berikut ini pada console/cmd composer install
Tunggu beberapa menit hingga semua berjalan tanpa error.
Langkah Kedua
top
Buatlah sebuah file index.php atau apapun dengan tuliskan code dibawah ini: <?php
require_once "Kecik/Kecik.php";
// atau untuk composer
require_once "vendor/autoload.php";
`require "Kecik\Kecik.php" ` untuk memasukan file system framework ke project yang ingin kita buat.
Lalu coba jalankan, jika hanya menampilkan halaman kosong tanpa pesan error berarti sudah berhasil.
Untuk cara penggunaan composer tidak akan dibahas disini, anda dapat mempelajarinya dari dokumentasi yang disedia di website composer, baik secara online maupun offline.
Langkah Ketiga
top
Buat variabel dari Class Framework Kecik seperti dibawah ini $app = new Kecik\Kecik();
Lalu coba jalankan kembali, jika tidak terdapat error berarti anda sudah sukses sampai tahap ini.
Langkah Keempat
top
Langkah selanjutnya adalah membuat Route untuk index dan menjalankan framework, berikut code nya: $app->get('/', function() {
return 'Hello Kecik';
});
$app->run();
Setelah code ditulis coba jalankan, maka akan tampil tulisan "Hello Kecik" itu berarti anda telah berhasil membuat tampilan untuk route index/halaman utama project anda.
Tampilan kesuluruhan code: <?php
//require_once "Kecik/Kecik.php";
// atau untuk composer
require_once "vendor/autoload.php"
$app = new Kecik\Kecik();
$app->get('/', function() {
return 'Hello Kecik';
});
$app->run();
Mengenal Lebih Dalam Lagi
Header
top
Header digunakan melakukan setting header untuk sebuah response
$app->get('hello', function() {
$this->header(200);
return 'Hello Kecik';
});
Route
top
Route yang terdapat pada framework kecik saat ini adalah get, post, put, delete, options, dan patch, dimana get, post, put, delete, options, dan patch adalah sumber request dan artinya route tersebut hanya akan diproses pada request yang sesuai. Untuk penggunaannya terdapat beberapa, dan paling sederhana adalah tanpa menggunakan Controller, variabel eksternal dan template, seperti berikut ini: $app->get('/', function() {
return 'Hello Kecik';
});
Dengan menggunakan parameter: $app->get('hello/:nama', function ($nama) {
return 'Hello '.$nama;
});
Parameter pada route menggunakan `: pada bagian depannya, sedangkan untuk parameter yang bersifat optional bisa menggunakan (:) `
> contoh: hello/(:nama)
Dengan menggunakan Controller: $app->get('selamat_datang/:nama', new Controller\Welcome($app), function ($controller, $nama) {
return $controller->index($nama);
});
atau $app->get('selamat_datang/:nama', function($nama) {
$controller = new Controller\Welcome($this);
return $controller->index($nama);
});
Pastikan sebelumnya sudah membuat Controller yang ingin digunakan pada route tersebut.
Dengan menggunakan Template: $app->get('hello/:nama', function ($nama) {
return 'Hello '.$nama;
})->template('template_kecik');
$app->get('selamat_datang/:nama', new Controller\Welcome($app), function ($controller, $nama) {
return $controller->index($nama);
})->template('template_kecik');
$app->get('welcome/:nama', function($nama) {
$controller = new Controller\Welcome($this);
return $controller->index($nama);
})->template('template_kecik');
Group
Kecik Framework juga mendukung pengelompokan route. $app->group('book', function() {
$this->post('insert', function() {
$controller = new Controller\Book($this);
return $controller->insert();
});
$this->get('get', function() {
$controller = new Controller\Book($this);
return $controller->get();
});
$this->post('update', function() {
$controller = new Controller\Book($this);
return $controller->update();
});
$this->post('delete', function() {
$controller = new Controller\Book($this);
return $controller->delete();
});
$this->post('find', function() {
$controller = new Controller\Book($this);
return $controller->find();
});
});
HTML mendukung method POST dan GET , dan jika kita ingin menggunakan method seperti PUT , DELETE , OPTIONS , dan PATCH kita dapat menggunakannya dengan cara melakukan Override
<form method="POST" action="<?php $this->url->to('login') ?>">
<label>Username</label>
<input type="text" name="username" />
<label>Password</label>
<input type="password" name="password" />
<input type="hidden" name="_METHOD" value="PUT">
<input type="submit" value="LOGIN" />
</form
> Catatan: Berlaku juga pada penggunaan post, put, delete, options, dan patch, untuk menggunakan controller dan template ada beberapa tahap yang perlu dipersiapkan
is()
Untuk mendapatkan nilai route saat ini <a href="<?php $this->url->to('home') ?>" <?php echo ($this->route->is() == 'home')? 'class="active"': '' ?>>Home</a>
isPost()
Untuk mengecheck apakah metode request adalah POST , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isPost() == FALSE)
$this->header(404);
isGet()
Untuk mengecheck apakah metode request adalah GET , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isGET() == FALSE)
$this->header(404);
isPut()
Untuk mengecheck apakah metode request adalah PUT , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isPut() == FALSE)
$this->header(404);
isDelete()
Untuk mengecheck apakah metode request adalah DELETE , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isDelete() == FALSE)
$this->header(404);
isPatch()
Untuk mengecheck apakah metode request adalah PATCH , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isPatch() == FALSE)
$this->header(404);
isOptions()
Untuk mengecheck apakah metode request adalah OPTIONS , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isOptions() == FALSE)
$this->header(404);
isAjax()
Untuk mengecheck apakah metode request adalah AJAX , jika benar maka nilai adalah TRUE jika salah maka nilai adalah FALSE if ($this->route->isAjax() == FALSE)
$this->header(404);
Pertama:
Setting path atau lokasi untuk assets, applikasi(MVC), dan template, berikut cara setting: $app->config->set('path.assets', 'assets');
$app->config->set('path.mvc', 'app');
$app->config->set('path.template', 'templates');
Kedua:
Buatlah folder/direktori berdasarkan settingan path sebelumnya.
Ketiga:
Untuk folder/direktori assets dan applikasi pastikan didalamnya terdapat sub folder/direktori +-- assets
| +-- css
| +-- js
| +-- images
+--app
| +-- controllers
| +-- models
| +-- views
Config
top
Untuk project yang besar dan tidak sederhana kita memerlukan beberapa setting/konfigurasi, untuk melakukan setting/konfigurasi framework ini juga dilengkapi config, baik untuk menyetting ataupun untuk membaca settingan
set()
Gunakan fungsi set pada config untuk melakukan settingan nilai/menambah settingan set($key, $value)
> paramater `$key ` merupakan parameter kunci untuk sebuah settingan
>
> paramater `$value ` merupakan parameter nilai dari sebuah settingan
Contoh: $app->config->set('path.assets', 'assets');
get()
Gunakan fungsi get untuk mendapatkan nilai dari suatu settingan get($key)
> parameter `$key ` merupakan parameter kunci untuk sebuah settingan yang ingin diambil nilainya
Contoh: $asset_path = $app->config->get('path.assets');
Konfigurasi Saat Instance Kecik Dibuat
$config = [
'path.assets' => 'assets',
'path.mvc' => 'app',
'path.template' => 'templates',
'error.404' => 'kecik_template/404',
'mod_rewrite' => TRUE,
'libraries' => [
'DIC' => ['enable'=>TRUE],
'Session' => [
'enable' => TRUE,
'config' => ['encrypt' => TRUE]
],
'Cookie' => [
'enable' => TRUE,
'config' => ['encrypt' => TRUE]
],
'Database' => [
'enable' => TRUE,
'config' => [
'driver' => 'mysqli',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'kecik'
]
],
'MVC' => ['enable' => TRUE],
'Language' => [
'enable' => TRUE,
'params' => [
'id' => 'language/lang_id.json',
'us' => 'language/lang_us.json'
]
]
]
];
$app = new Kecik\Kecik($config);
$app->get('/', function() {
return 'Hello Kecik';
});
$app->run();
Assets
top
Assets sangat diperlukan dalam mempermudah pekerjaan kita untuk menambahkan atau menghilangkan assets seperti css, js dan images, sangat berguna juga untuk membuat template, dan assets juga bisa disesuaikan bedasarkan controller yang digunakan. Assets css dan js memiliki struktur yang sama sedangkan untuk images berbeda.
add()
Fungsi ini digunakan untuk menambahkan sebuah file assets baik css maupun js. add($file='')
> paramater `$file ` berisikan nama file assets yang ingin diload, tuliskan tanpa menggunakan extension
Contoh: $app->assets->css->add('boostrap');
$app->assets->js->add('jquery.min');
delete()
Fungsi ini digunakan untuk menghapus sebuah file assets yang ingin diload baik css maupun js. delete($file='')
> paramater `$file ` berisikan nama file assets yang ingin diload, tuliskan tanpa menggunakan extension
Contoh: $app->assets->css->delete('boostrap');
$app->assets->js->delete('jquery.min');
render()
Fungsi ini digunakan untu merender sebuah daftar asset atau salah satu asset yang ingin diload baik css maupun js render($file='')
> paramater `$file ` berisikan nama file assets yang ingin diload, tuliskan tanpa menggunakan extension
Contoh: echo $app->assets->css->render();
echo $app->assets->js->render();
// atau spesifik render
echo $app->assets->css->render('boostrap');
echo $app->assets->js->render('boostrap.min');
images()
Fungsi ini digunakan untuk mendapatkan link file assets untuk gambar. images($file)
> paramater `$file ` berisikan nama file assets gambar yang ingin digunakan.
Contoh: <img src="<?php echo $app->assets->images('kecik.jpg'); ?>" />
url()
Fungsi ini digunakan untuk mendapatkan link file assets untuk gambar. url()
> paramater `$file ` berisikan nama file assets gambar yang ingin digunakan.
Contoh: echo $app->assets->url()."fonts/";
Request
top
Request merupakan bentuk lain dari penggunaan `$_GET , $_POST dan $_SERVER `
get()
Anda dapat menggunakan fungsi get untuk mendapatkan nilai dari `$_GET ` get($var='')
> paramater `$var ` berisikan nama dari variabel get
Contoh: print_r($this->request->get());
$x = $this->request->get('x');
post()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari `$_POST ` post($var='')
> paramater `$var ` berisikan nama dari variabel post
Contoh: print_r($this->request->post());
$x = $this->request->post('x');
put()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari method put put($var='')
> paramater `$var ` berisikan nama dari variabel post
Contoh: print_r($this->request->post());
$x = $this->request->post('x');
delete()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari method delete delete($var='')
> paramater `$var ` berisikan nama dari variabel post
Contoh: print_r($this->request->delete());
$x = $this->request->delete('x');
options()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari method options options($var='')
> paramater `$var ` berisikan nama dari variabel post
Contoh: print_r($this->request->options());
$x = $this->request->options('x');
patch()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari method patch patch($var='')
> paramater `$var ` berisikan nama dari variabel post
Contoh: print_r($this->request->patch());
$x = $this->request->patch('x');
file()
Anda dapat menggunakan fungsi post untuk mendapatkan nilai dari method file file($file)
> paramater `$file ` berisikan nama dari variabel FILES
Contoh: $x = $this->request->file('photo')->move($source, $destination);
server()
Anda dapat menggunakan fungsi server untuk mendapatkan nilai dari `$_SERVER ` server($var='')
> paramater `$var ` berisikan nama dari variabel server
Contoh: print_r($this->request->server());
$host = $this->request->server('HTTP_HOST');
MVC
Framework ini juga mendukung MVC sederhana, dimana route akan memanggil Controller dan Controller akan memanggil Model atau/dan View.
Controller
top
Untuk membuat controller caranya cukup mudah, kita tinggal membuat file dengan nama sesuai dengan nama controllernya dan disimpan pada direktory yang sudah disetting sebelumnya melalui config, berikut ini code sederhana sebuah controller <?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{
public function __construct($app) {
parent::__construct($app);
}
}
Cara menggunakan controller tersebut pada route adalah sebagai berikut $app->get('/', new Controller\Welcome($app), function($controller) {
});
use Kecik\Controller;
class Welcome extends Controller{ var $dbcon;
public function __construct($app, $dbcon) {
parent::__construct($app);
$this->dbcon = $dbcon;
}
}
Selanjutnya cara menggunakannya pada route sebagai berikut:
$app->get('/', new Controller\Welcome($app, $dbcon), function($controller) {
});
- Menggunakan Method/Fungsi
Untuk menggunakan method/fungsi pada controller juga cukup mudah caranya, tinggal di panggil pada bagian callback route. Berikut ini cara penulisan code controller mennggunakan method/fungsi.
<?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{ var $dbcon;
public function __construct($app, $dbcon) {
parent::__construct($app);
$this->dbcon = $dbcon;
}
public function index() {
return 'Kecik berkata: Controler->index()';
}
}
Selanjutnya cara menggunakan method atau fungsi tersebut pada route adalah sebagai berikut.
$app->get('/', new Controller\Welcome($app, $dbcon), function($controller) { return $controller->index();
});
- Menggunakan parameter pada Method/Fungsi
Untuk memberikan paramter pada Method/Fungsi dalam controller dapat kita berikan pada saat pemanggilan method pada callback route, berikut ini contoh code controller dengan method/fungsi berparameter.
<?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{ var $dbcon;
public function __construct($app, $dbcon) {
parent::__construct($app);
$this->dbcon = $dbcon;
}
public function index() {
return 'Kecik berkata: Controler->index()';
}
public function hello($nama) {
return "Hello, $nama";
}
}
Cara menggunakannya pada route dengan cara sebagai berikut.
$app->get('/hello/:nama', new Controller\Welcome($app, $dbcon), function($controller, $nama) { return $controller->index($nama);
});
Middleware
-----------------
top
Middleware merupakan fungsi-fungsi yang akan dijalankan sebelum/setelah callback pada route di eksekusi.
$mw1 = function() { echo 'is Middleware 1 [Before]';
};
$mw2 = function() { echo 'is Middleware 2 [Before]';
};
$mw3 = function() { echo 'is Middleware 3 [After]';
};
$mw4 = function() { echo 'is Middleware 4 [After]';
};
$app->get('middleware', array($mw1, mw2), function() { return 'is Response Middleware Route';
}, array($mw3, $mw4));
Model
---------
top
Untuk membuat model caranya cukup mudah, kita tinggal membuat file dengan nama sesuai dengan nama modelnya dan disimpan pada direktory yang sudah disetting sebelumnya melalui config, berikut ini code sederhana sebuah model
<?php
//file data.php
namespace Model;
use Kecik\Model;
class Data extends Model {
protected static $table = 'data';
public function __construct($id='') {
parent::__construct($id);
}
}
Cara penggunaan Model pada controller adalah sebagai berikut.
<?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{ var $dbcon;
public function __construct($app, $dbcon) {
parent::__construct($app);
$this->dbcon = $dbcon;
}
public function index() {
return 'Kecik berkata: Controler->index()';
}
public function hello($nama) {
return "Hello, $nama";
}
public function insert() {
$model = new \Model\Data();
$model->nama = $this->request->post('nama');
$model->email = $this->request->post('email');
$sql = $model->save();
}
public function update($id) {
$model = new \Model\Data(array('id'=>$id));
$model->nama = $this->request->post('nama');
$model->email = $this->request->post('email');
$sql = $model->save();
}
public function delete($id) {
$model = new \Model\Data(array('id'=>$id));
$sql = $model->delete();
}
}
View
--------
top
Untuk membuat view juga cukup mudah, karena disini anda tidak perlu membuat class/objek, tapi cukup file php biasa saja yang akan dipanggil oleh controller, berikut code view.
<!-- file welcome.php -->
<?php echo 'Ini dari View' ?>
Cara menggunakan file view dari controller adalah sebagai berikut.
<?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{
public function __construct($app) {
parent::__construct($app);
}
public function welcome() {
return $this->view('welcome');
}
}
Cara mengirimkan variable ke view adalah sebagai berikut
<?php
// file welcome.php
namespace Controller;
use Kecik\Controller;
class Welcome extends Controller{
public function __construct($app) {
parent::__construct($app);
}
public function welcome($nama) {
return $this->view('welcome', array('nama'=>$nama));
}
}
---
Url
----
top
Url sangat diperlukan dalam mempermudah pekerjaan kita untuk mengambil nilai seperti protocol, base path, base url, bahkan untuk melakukan redirect ataupun membuat link ke route lain.
####protocol()
Untuk mendapatkan nilai protocol
echo $this->url->protocol(); ####basePath()
Untuk mendapatkan nilai Path/Direktori Dasar
echo $this->url->basePath(); ####baseUrl()
Untuk mendapatkan nilai dasar Url
echo $this->url->baseUrl(); ####redirect($route)
Untuk melakukan redirect ke route lain
$this->url->redirect('login'); ####to($route)
Untuk mencetak Url dengan route
<a href="<?php $this->to('home') ?>">HOME</a> ####linkTo($route)
Untuk mendapatkan nilai Url dengan Route
<a href="<?php echo $this->linkTo('home') ?>">Home</a>
---
Template
---------------
top
Untuk membuat template pada framework ini juga cukup mudah, anda tinggal membuat file template pada direktori yang telah anda setting sebelumnya pada config. Berikut ini adalah contoh sederhana dari code template
<!-- file template.php -->
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="utf-8" />
<title>Simple Template</title>
<meta name="description" content="overview & stats" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@css
</head>
<body>
<div class="container">
@response
</div>
@js
</body>
</html>
> Tanda {{ dan }} hanya tag pengganti untuk tag <?php dan > untuk mencetak anda dapat menggunakan {{= ini sama dengan <?php echo sedangkan jika ingin menggunakan tanda {{ dan }} untuk keperluan AngularJS anda bisa menggunakan tanda \ didepan nya, contoh: \{{ atau \}} , ini hanya untuk kebutuhan template engine sederhana saja, tapi anda tetap bisa menggunakan tag php
>
> Sedangkan @response atau @yield adalah untuk meletakan hasil output dari controller.
> Sedangkan @css atau @js adalah untuk me render assets css atau js.
>
> Tag-tag tersebut hanya digunakan pada template saja, tidak berlaku pada View
Cara menggunakan template tersebut pada route adalah sebagai berikut.
<?php
$app->get('welcome/:nama', new Controller\Welcome($app), function ($controller, $nama) { return $controller->welcome($nama);
})->template('template');
Mengganti Template (Replace Template)
<?php
$app->get('admin', function() { if (!isset($_SESSION['login'])) {
// Replace Template
$this->template('login', TRUE);
} else {
$controller = new Controller\Admin($this);
return $controller->index();
}
})->template('template');
|