|  Download Kecik Framework> PayPal: 
> 
> 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,UPDATEdanDELETEsaja, 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 Pertamatop 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 Keduatop 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 Ketigatop 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 Keempattop 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 LagiHeadertop Header digunakan melakukan setting header untuk sebuah response $app->get('hello', function() {
	$this->header(200);
	return 'Hello Kecik';
});
 Routetop 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');
 GroupKecik 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 POSTdanGET, dan jika kita ingin menggunakan method sepertiPUT,DELETE,OPTIONS, danPATCHkita dapat menggunakannya dengan cara melakukanOverride <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 adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isPost() == FALSE)
	$this->header(404);
 isGet()Untuk mengecheck apakah metode request adalah GET, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isGET() == FALSE)
	$this->header(404);
 isPut()Untuk mengecheck apakah metode request adalah PUT, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isPut() == FALSE)
	$this->header(404);
 isDelete()Untuk mengecheck apakah metode request adalah DELETE, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isDelete() == FALSE)
	$this->header(404);
 isPatch()Untuk mengecheck apakah metode request adalah PATCH, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isPatch() == FALSE)
	$this->header(404);
 isOptions()Untuk mengecheck apakah metode request adalah OPTIONS, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE if ($this->route->isOptions() == FALSE)
	$this->header(404);
 isAjax()Untuk mengecheck apakah metode request adalah AJAX, jika benar maka nilai adalahTRUEjika salah maka nilai adalahFALSE 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
 Configtop 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();
 
 Assetstop 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/";
 Requesttop Request merupakan bentuk lain dari penggunaan `$_GET,$_POSTdan$_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');
 MVCFramework ini juga mendukung MVC sederhana, dimana route akan memanggil Controller dan Controller akan memanggil Model atau/dan View. Controllertop 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<?phpdan>untuk mencetak anda dapat menggunakan{{=ini sama dengan<?php echosedangkan 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@responseatau@yieldadalah untuk meletakan hasil output dari controller.
> Sedangkan@cssatau@jsadalah 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'); 
 |