Membuat MVC Framework Sederhana Dengan PHP
Membuat MVC Framework Sederhana Dengan PHP
1.
2.
3.
4.
5.
6.
Tidak semua MVC framework berjalan seperti itu, tetapi ini adalah dasar dari
framework yang akan kita buat dalam pembahasan ini
Ayo kita mulai ..
Tentukan struktur datanya
./my_mvc
./my_mvc/application
./my_mvc/application/controller
./my_mvc/application/model
./my_mvc/application/view
Itu sudah cukup jelas, gak usah diterangin lagi ya.. ^_^V
/.htaccess
Sebelumnya kita harus membuat file .httaccess, file ini akan mengarahkan semua
permintaan HTTP ke file index.php.
RewriteEngine On
RewriteBase /my_mvc/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
define("BASE_PATH", "http://localhost");
//Mendefiniskan basepath
$path = "/my_mvc";
//Mendapatkan inisial PATH.
$url = $_SERVER['REQUEST_URI'];
$url = str_replace($path,"",$url);
//membuat array dari URL
$array_tmp_uri = preg_split('[\\/]', $url, -1, PREG_SPLIT_NO_EMPTY);
//Disini, ditentukan peran masing-masing segmen dalam URL
$array_uri['controller'] = $array_tmp_uri[0]; // adalah class
$array_uri['method'] = $array_tmp_uri[1]; // adalah fungsi
$array_uri['var']
= $array_tmp_uri[2]; //adalah variabel/parameter
//memuat base API
require_once("application/base.php");
//memuat controller
$application = new Application($array_uri);
$application->loadController($array_uri['controller']);
/application/base.php
Class berikut ini adalah class yang utama dan sangat penting, mengingat dari
class inilah controller yang akan kita buat , demikian pun model dan view-nya
akan di 'load'
class Application
{
var $uri;
var $model;
function __construct($uri)
{
$this->uri = $uri;
}
function loadController($class)
{
$file = "application/controller/".$this->uri['controller'].".php";
if(!file_exists($file)) die();
require_once($file);
$controller = new $class();
if(method_exists($controller, $this->uri['method']))
{
$controller->{$this->uri['method']}($this->uri['var']);
} else {
$controller->index();
}
}
function loadView($view,$vars="")
{
if(is_array($vars) && count($vars) > 0)
extract($vars, EXTR_PREFIX_SAME, "wddx");
require_once('view/'.$view.'.php');
}
function loadModel($model)
{
require_once('model/'.$model.'.php');
$this->$model = new $model;
}
}
/application/model/model_blog.php
class model_blog extends Application
{
function __construct()
{
//lakukan sesuatu dimari, koneksi DB, dst,dsb,dll..
}
function select()
{
return array("title 1","title 2","title3");
}
}
Class ini bertanggungjawab untuk pengelolaan Database, pada contoh model yang
dibuat ini kita buat fungsi sederhana select() yang mensimulasikan array dari hasil
query ke database dengan beberapa baris data.
/application/view/view_blog.php
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>My Blog</h1>
<?foreach($articles as $article):?>
<h3><?=$article?></h3>
<?endforeach?>
</body>
</html>
/application/view/view_blog_add.php
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>My Blog</h1>
<h3>Title:</h3>
<input type="text" value="<?=$title?>">
</body>
</html>
Iseng2 by
: cahya dsn
Created date : 2013-01-07