Membuat mvc framework sederhana dengan php

7
Membuat MVC Framework Sederhana dengan PHP Kali ini kita akan membuat sebuah MVC framework di PHP. Aplikasi yang dibuat sangat sederhana namun memungkinkan kita untuk memahami cara kerjanya. MVC pada awalnya banyak digunakan dalam aplikasi GUI dekstop, tetapi saat ini dengan perkembangan dan kematangan bahasa pemrograman web, bermunculanlah beberapa framework yang menggunakan arsitektur ini. Kayaknya sih yang memulai visi web ini adalah David Heinemeier Hansson pembuat Ruby On Rails, yang pertama kali meluncurkan MVC untuk pertama kalinya ke web. Sebelum makin OOT mari kita lajutkan bahasan ini MVC, singkatnya adalah cara yang efisien, bersih dan cepat untuk memisahkan kode program dari kode HTML, atau antar muka lain yang kita pilih. MVC berarti, Model – View – Controller. Model: bertanggungjawab terhadap pengelolaan data seperti SQL databases dan operasi SELECT, UPDATE, DELETE,dsb, dst, dll View: menampilkan antarmuka (UI), html, css, javascript dan sebagainya Controller: Jantung dan otak dari arsitektur MVC, tempat semua request masuk, controller adalah yang menjembatani antara view dan model. Berikut skema sederhana bagaimana semua ini bekerja.

Transcript of Membuat mvc framework sederhana dengan php

Page 1: Membuat mvc framework sederhana dengan php

Membuat MVC Framework Sederhana dengan PHP

Kali ini kita akan membuat sebuah MVC framework di PHP.

Aplikasi yang dibuat sangat sederhana namun memungkinkan kita untuk memahami cara kerjanya.

MVC pada awalnya banyak digunakan dalam aplikasi GUI dekstop, tetapi saat ini dengan perkembangan dan kematangan bahasa pemrograman web, bermunculanlah beberapa framework yang menggunakan arsitektur ini.

Kayaknya sih yang memulai visi web ini adalah David Heinemeier Hansson pembuat Ruby On Rails, yang pertama kali meluncurkan MVC untuk pertama kalinya ke web.

Sebelum makin OOT mari kita lajutkan bahasan ini

MVC, singkatnya adalah cara yang efisien, bersih dan cepat untuk memisahkan kode program dari kode HTML, atau antar muka lain yang kita pilih.

MVC berarti, Model – View – Controller.

Model: bertanggungjawab terhadap pengelolaan data seperti SQL databases dan operasi SELECT, UPDATE, DELETE,dsb, dst, dll

View: menampilkan antarmuka (UI), html, css, javascript dan sebagainya

Controller: Jantung dan otak dari arsitektur MVC, tempat semua request masuk, controller adalah yang menjembatani antara view dan model.

Berikut skema sederhana bagaimana semua ini bekerja.

Page 2: Membuat mvc framework sederhana dengan php

1. Pengunjung mengetik http://www.umsite.com/blog

2. Framework akan mengarahkan ke controller blog.php

3. Controller akan memproses dan membentuk informasi

4. Model akan mengirim ke Controller data yang diperlukan oleh Controller.

5. Controller akan mengemas informasi ini untuk diberikan ke view.

6. Dan akhirnya, controller akan memanggil view dan menampilkannya sebagai antarmuka

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 OnRewriteBase /my_mvc/RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [L]

Note: mod_rewrite harus sudah aktif pada konfigurasi Apache webservernya (ceritanya.. ini pake web server Apache gitu, kalo beda ya sesuai-in aja ye..… ^_^V).

/index.php

Index.php seperti yang dijelaskan sebelumnya adalah merupakan pintu gerbang aplikasi ini, kapanpun kita mengakses URL, maka .htaccess akan mengarahkan ke file index.php ini dan file ini akan memuat API framework kita, dan API akan memanggil controller dan seterusnya.

Page 3: Membuat mvc framework sederhana dengan php

//Mendefiniskan URL 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 APIrequire_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;

Page 4: Membuat mvc framework sederhana dengan php

}}

Percaya gak, kita barusan saja membuat 'ultra-slim-light MVC framework'. Nggak susah 'kan?

Nah sekarang, coba kita mulai memakai framework yang barusan kita bikin itu dengan membuat controller, model dan 2 buah view untuk sebuah blog.

/application/controller/blog.php

Ini adalah nama dari controller-nya, jadi setiap kita mengakses http://localhost/my_mvc/blog/ maka class Application akan memfilter URL dari index.php, dan akan memuat file blog.php.

class Blog extends Application{ function __construct() { $this->loadModel('model_blog'); }

function index() { $articles = $this->model_blog->select(); $data['articles'] = $articles; $this->loadView('view_blog',$data); } function add($title="") { $data['title'] = $title; $this->loadView('view_blog_add',$data); }}

Jika diperhatikan, dalam constructor class-nya kita bisa menentukan 'model' yang akan digunakan, dalam kasus ini kita memilih 'model_blog', dan model ini akan dimuat dari file ./application/model/model_blog.php (akan dijelaskan entar ya…)

Secara default, class ini akan menjalankan semua kode dalam fungsi index(), tetapi jika kita mengakses http://localhost/my_mvc/blog/add, maka class Blog ini akan menjalankan fungsi add(). Sederhana kan?

Di dalam setiap fungsi dari Class yang kita buat dapat memanggil fungsi-fungsi dari model juga, atau mendefinisikan variabel yang akan digunakan di dalam 'view'.

Kalo dilihat lebih dekat fungsi index() terlihat bahwa:

- memanggil fungsi select() dari model model_blog.php

- membuat sebuah array yang berisi data variable

Page 5: Membuat mvc framework sederhana dengan php

- memuatnya ke dalam sebuah view dari variable array tersebut

/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>

Dan terakhir, kita mempunyai 2 view seperti yang dibicarakan sebelumnya. Hasilnya akan menampilkan 'hasil' akhir, dalam HTML tentunya..

----------------------------

Page 6: Membuat mvc framework sederhana dengan php

Iseng2 by : cahya dsnCreated date : 2013-01-07

Page 7: Membuat mvc framework sederhana dengan php

Iseng2 by : cahya dsnCreated date : 2013-01-07