Artikel ini menjelaskan bagaiman cara membangun framework MVC versi kita sendiri. Pada framework MVC pada umumnya terbagi menjadi 5 sistem yaitu sistem inti (core), database, library, helper dan application. Guna mengawali proses pembangunan framework, saya mecoba membahas bagaimana cara membangun sistem inti (core) terlebih dahulu. Sedangkan sub sistem yang lain akan saya bahas pada artikel-artikel selanjutnya. Sangat menarik untuk disimak.

Membuat framework PHP berbasis Model View Controller(MVC) ternyata tidak terlalu sulit.Pada tahap ini akan dijelaskan tata cara pembuatan Controller,View dan struktur lainnya seperti Loader, Register Object dan sebagainya. Sebelum kita mulai pembuatan framework-nya, alangkah lebih baik dijelaskan terlebih dahulu apa latar belakang framework MVC.

Dilihat dari sejarahnya sebenarnya konsep MVC ini sudah ada sejak lama. Konsep MVC ini pertama kali diperkenalkan oleh para peneliti XEROX PARC yang bekerja dalam pembuatan bahasa pemrograman Smalltalk sekitar tahun 1970-1980. Pada dasarnya MVC adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model), tampilan (View) dan cara bagaimana memprosesnya (Controller).

Sampai saat ini framework yang dalam aplikasi website kebanyakan berbasis arsitektur MVC, misalnya CodeIgniter, Simphony, Kohana, cakePHP dan lain sebagainya. Kebanyakan framework yang ada sekarang ini bersifat open source sehingga siapapun bisa mengembangkannya sesuai dengan kebutuhan.Gambar disamping ini menjelaskan bagaimana konsep dasar struktur framework MVC.

Sesuai dengan namanya konsep MVC terbagi menjadi tiga bagian yaitu Controller, Model dan View. Controller berfungsi sebagai sarana komunikasi (input/output) ke browser. Jadi setiap pengguna melakukan komunikasi dengan aplikasi web site pastinya pengguna tersebut berinteraksi dengan controller. Model berfungsi untuk input/output ke database. Sedangkan view adalah sekumpulan tampilan baik itu HTML, CSS, Javascript dan lain sebagainya.

Dalam tulisan kali ini sengaja di buat tema “Hierachical Framework MVC”, memang framework ini mendukung banyak aplikasi dalam satu framework. Jadi slogan yang diusung adalah “One Framework Many application”. Nah untuk membedakan aplikasi website satu dengan yang lain disusunlah model hierarki. Konsep inilah yang membedakan framework ini dengan konsep framework CodeIgniter.

Tole : “Pakdhe..Pakdhe..coba sampean lihat gambarnya…kok mirip seperti becak ya? laugh”
Pakdhe :”Huss…gimana to?kok mirip becak?apa gara-gara ada 3 bagian itu?oalah..imajinasi sampean itu lho,kok ya aneh-aneh saja”
Tole :”Lha ya itu, coba to sampean perhatiin lagi…bener kan mirip becak?”
Pakdhe :”Whooo..iya ya…bener sampean, kalau tak perhatikan dengan seksama memang mirip becak je.Ya sudah kalau begitu framework yang kita bikin nanti kita namakan becak aja, piye?setuju nggak sampean?”
Tole : “wheladalah…setuju buanget Pakdhe…Becak MVC Framework made in Pakdhe Sakiyun, keren kan Pakdhecheeky”

Dari percakapan antara si Pakdhe Sakiyun dan Tole Dulkamit inilah, akhirnya muncul inspirasi tentang penamaan framework yang dibangun ini. Dari hasil diskusi yang panjang lebar dan tentunya disertai dengan proses semedi yang lama, maka framework ini sepakat dinamakan “Becak Model View Controller” atau disingkat “Becak MVC”

OK,kita lanjutkan saja. Secara garis besar cara kerja framework kita ini dapat dilihat pada gambar dibawah ini.

Tutorial Membangun HMVC Framework

Tutorial Membangung HMVC Framework

Nah..pada implementasinya, framework yang akan kita bangun nanti terdiri dari 5 sub sistem yaitu : sub sistem core, databases, libraries, helpers dan aplication(controllers, models dan views versi pengembang aplikasi website). Secara umum gambaran diagramnya terlihat seperti gambar dibawah ini. Hanya saja dalam tulisan kali ini saya akan konsentrasi ke pembangunan sistem core saja. Untuk sub sistem yang lain akan saya bahas dilain waktu.

Adapun susunan folder keseluruhan dari framework ini terlihat seperti pada gambar disamping ini. Pada sub folder system (lingkaran nomor 1, warna hijau) terdapat 3 buah sub folder penting yaitu sub folder core, database, helpers dan libraries. Didalam ketiga folder iniliah letak program inti dalam framework kita.

Jika secara keseluruhan framework ini saya analogikan sebagai mobil, maka sistem core ini ibaratnya seperti mesinnya. penggerak utama dari keseluruhan sistem dalam framework ini adalah sistem core. Sedangkan database, library dan helper adalah fungsi-fungsi tambahan sebagai pelengkap dari keseluruhan sistem. Untuk database, library dan helper akan saya bahas pada artikel yang lain. Untuk saat ini kita konsentrasi ke sistem core saja.

Sedangkan sistem application (lingkaran 2 warna merah) fungsinya untuk apa? pada application inilah nantinya aplikasi web yang dikembangkan oleh pengguna framework ini berada. Jadi pada intinya Ibarat ingin membuat sebuah mobil, para pengembang aplikasi web itu tidak perlu lagi capek-capek membuat semua komponen mobil mulai dari awal. Mereka cukup memanfaatkan dan merangkai fasilitas-fasilitas yang sudah tersedia menjadi sebuah mobil. Dengan konsep kerja semacam ini tentunya siapapun akan lebih mudah dalam mengembangkan sebuah aplikasi web. Hanya saja tata cara pembuatan web tersebut tentunya harus mengikuti aturan main yang distandarisasikan oleh pengembang framework.

Jadi kesimpulannya framework ini boleh dimanfaatkan sebebas-bebasnya untuk membuat aplikasi apapun asalkan para pengembang aplikasi web bersedia mengikuti aturan mainnya pakdhe Sakiyun. Aturan mainnya bagaimana? gampang…sediakan saja sebungkus kopi dan segelas rokok pasti beres urusannya 😀

OK, kembali lagi ke sistem core, sebenarnya class yang paling pokok dalam sistem core tersebut adalah class controller. Class controller inilah nantinya akan diturunkan (extends) ke semua class controller yang dibuat oleh pengembang web site. Perlu kita pahami bahwa tugas utama class controller adalah memuat (loaded) semua object yang dibutuhkan oleh sistem, seperti misalnya library, helper, database, view, plugins dan lain sebagainya. Oleh karena itu agar codingnya tidak terlalu panjang maka fungsi-fungsi untuk memuat berbagai macam object tersebut kita tuliskan kedalam class loader. Secara umum desain class diagram sistem core ini terlihat seperti gambar dibawah ini.

Tole :”Pakdhe…kok kayaknya rumit ya?apa memang framework itu rumit?”
Pakdhe :”Yang rumit apanya Tole?ini kan baru pengantarnya saja, Pakdhe belum bahas programnya lho”
Tole :”Waduh…pengantarnya saja sudah bikin saya pusing Pakdhe, apalagi programnya
Pakdhe “Sabar Tole, diikuti saja dulu nanti kan lama-lama ngerti juga.Makanya dengerin Pakdhe cerita dulu biar nggak pusing

OK. Pertama-tama coba saya bahas bagaimana membangun modul core terlebih dahulu. Sebelum dilanjut ke desain sistem, perlu saya jelaskan terlebih dahulu struktur directory modul core-nya. Lihat gambar disamping. Perhatikan letak directory modul core (lingkaran nomor 1). Sedangkan global_controller.php (lingkaran nomor 2) akan saya bahas lebih lanjut pada sub bagian 7 pada artikel ini. Pada folder system/core tersebut terdapat 6 program yaitu :

1. base
2. bootstrap
3. common
4. controller
5. loader
6. model

1. base.php
class base ini berfungsi untuk digunakan untuk menyimpan instance object. Dalam susunan hierarki, base class ini menempati urutan tertinggi atau dapat diistilahkan root class. Tidak ada yang istimewa dalam class ini. Hanya saja fungsi dasarnya adalah menukarkan isi variable object itu sendiri ($this) ke variable $instance. Berikut ini script class base yang saya maksud.

2. bootstrap
Bootstrap ini bukan sebuah class. program ini berfungsi hanya untuk meng-include-kan/memanggil program-program penting lain yang diperlukan oleh aplikasi. Selain itu bootstrap ini juga berfungsi untuk mengeksekusi controller yang yang dipanggil oleh user.

3. Common
Class common ini berisi penanganan fungsi-fungsi umum misalnya register object, membaca configurasi dan operasi file. Telah disinggung diatas bahwa tugas dari class loader adalah memuat berbagai macam object yang dibutuhkan oleh sistem. Dalam class ini ada 2 (dua) function yang sangat penting yaitu singleton dan register. Apa itu singleton dan register? ada sub bab class Loader dibawah akan saya ulas lebih lanjut.

4. Controller
Seperti yang sudah saya jelaskan diatas, class controller inilah dijadikan induk dari keseluruhan controller yang dibuat oleh user. Pada class ini hanya terdapat konstrktor yang menjalankan function _init, dimana dalam function _init tersebut bertugas mendaftarkan library utama guna mendukung jalannya aplikasi. Apa itu library utama? nanti saya jelaskan di artikel lain yang khusus membahas tentang library.

5. Loader

Telah disinggung diatas bahwa tugas class loader adalah memuat berbagai macam object yang dibutuhkan oleh sistem. Namun kenyataannya pada saat memuat sebuah object, bisa saja object yang sama sudah pernah termuat sebelumnya. Jika hal ini dibiarkan maka akan mengakibatkan terjadinya penumpukan inisialisasi object yang sama pada memory. Penumpukan inisialisasi object ini tentu saja mengakitbatkan pemborosan pemakaian memory. Untuk menghindari hal tersebut maka dibutuhkan pola desain (design pattern) singleton yang contoh programmnya sudah saya copy-paste pada sub bab common diatas.

Tugas utama  singleton adalah memastikan bahwa tidak ada object yang sama dimuat lebih dari satu kali. Penghematan penggunaan memory wajib kita lakukan dengan harapan manakala web site kita sudah diakses oleh banyak orang, maka bisa kita minimalisir kemungkinan terjadinya macet (down) web server kita. Pada contoh program yang saya lampirkan, penulisan fungsi singleton ini bisa anda temui pada file common.php. Berikut ini source code class Loader yang saya maksud.

6. Model
Terakhir adalah class model. Class ini difungsikan sebagai induk dari model yang dibuat oleh user. Class model ini sebenarnya hanya berfungsi untuk mendaftar instance database ke base class. Pertanyaannyam kenapa kok instance database tersebut perlu disimpan dan didaftarkan? Framework ini memang didesain mampu mendukung multi connection database. Dikarenakan hal itulah maka masing-masing koneksi perlu disimpan ke memory agar supaya jikalau ada banyak koneksi database yang harus dijalankan,  maka variable koneksi tersebut masih tersimpan di memory dan masih bisa digunakan.

7. Global controller
Global controller adalah class yang digunakan untuk deklarasi variable-variable global, misalnya base_url, directory resource gambar, CSS, javascript dsb. Atau bisa juga digunakan untuk memanggil library dan helper yang nantinya digunakan pada seluruh aplikasi. Lokasi program global controller pada framework ini tersimpan di folder application/globals(Lihat gambar diatas-lingkaran nomor 2). Global controller ini sebenarnya mempunyai fungsi yang mirip seperti perintah $_GLOBAL. Jadi pada class inilah tempat mendeklarasikan semua variabel-variabel ataupun function yang sifatnya umum.

8. Index.php
Tentunya anda sudah paham apa kegunaan dari index.php kan? apa hayo? Index.php adalah file yang secara default akan dijalankan pertama kali ketika ada user (pengguna) yang mengkases web site. Nah ini source code-nya

Sampai disini pembahasan modul core (inti) selesai. Untuk library routing dan uri tidak saya bahas disini. Silahkan anda ikuti artikel saya berikutnya.

Artikel ini disadur dari http://blogkomputer.com/data-tutorial-membangun-sistem-core.html

7. Global controller
Global controller adalah class yang digunakan untuk deklarasi variable-variable global, misalnya base_url, directory resource gambar, CSS, javascript dsb. Atau bisa juga digunakan untuk memanggil library dan helper yang nantinya digunakan pada seluruh aplikasi. Lokasi program global controller pada framework ini tersimpan di folder application/globals(Lihat gambar diatas-lingkaran nomor 2). Global controller ini sebenarnya mempunyai fungsi yang mirip seperti perintah $_GLOBAL. Jadi pada class inilah tempat mendeklarasikan semua variabel-variabel ataupun function yang sifatnya umum.

Recent search terms:

  • cara membuat framework sendiri
  • membuat framework php sendiri
  • pembuatan framework
  • membuat framework vmch sendiri
  • perbedaan konsep MVC dan HMVC
  • membangun mvc
  • langjah langkah membuat framework sendiri
  • Framework becak
  • contoh program mvc php
  • tutorial mvc sendiri
Eko Heri Susanto

Eko Heri Susanto

Direktur Riset at Techno Visindo Ekatama
Lulusan S2 Teknik Informatika ITS Surabaya. Saat ini Eko Heri Susanto bekerja sebagai dosen di STIKOM PGRI Banyuwangi. Kegiatan sehari-hari selain mengajar adalah melakukan penelitian dan pengabdian kepada masyarakat.Sejak bulan Juli 2012 sampai dengan sekarang, Eko Heri Susanto diberi mandat oleh Ketua STIKOM PGRI Banyuwangi untuk mengisi jabatan sebagai Kepala Bagian Lembaga Penelitian dan Pengabdian kepada Masyarakat (Kabag. LPPM) di Kampus STIKOM PGRI Banyuwangi. Kompetensi yang dikuasainya adalah Rekayasaya Perangkat Lunak, tehnik pemrograman komunikasi data, pemrograman web dan tehnik pemrograman perangkat bergerak (mobile).

Selain bekerja sebagai Dosen, Eko Heri Susanto tergabung dengan tim Techno Visindo Ekatama (Tendotama).

Selain melalui email dan telephon, Eko Heri Susanto juga bisa dihubungi di Facebook. Ungkapan terimakasih dan salam hormat disampaikan oleh Eko Heri Susanto kepada para pembaca artikel di tendotama.com. Semoga tulisan-tulisannya dapat membawa manfaat bagi kita semua.
Eko Heri Susanto

Leave a Reply

Your email address will not be published. Required fields are marked *