MVC Framework

Embed Size (px)

Citation preview

A.Pengertian MVC Framework Konsep dasar MVC Framework Codeigniter Framework adalah salah satu dari sekian framework yang menggunakan sistem MVC (Model-View-Controller). Jangan bingung dulu di awal, banyak programmer PHP di forum-forum luar mengatakan KISS (Keep It Simple Stupid!) with MVC. Pengertian Framework merupakan suatu perangkat lunak (software) yang bersifat penggunaan ulang suatu library atau classes yang ada di dalam sistem tersebut untuk menjadi suatu aplikasi. Di dalam framework PHP, sudah terdapat beberapa classes, objects dan library. Dengan begitu ketika kita membuat aplikasi menggunakan framework, kita bisa menggunakan fitur yang sudah ada di dalam software tersebut. MVC itu sendiri adalah suatu konsep Model View Controller. Pada dasarnya dalam konsep MVC ini, Model merupakan pengolah data dan berkomunikasi dengan database, View adalah tampilan yang ditampilkan ke user, sedangkan Controller merupakan pengolah request user dan mengembalikan request user dalam bentuk View.

MVC (Model View Controller) MVC yaitu suatu istilah untuk memisahkan element -element atau penulisan source code dari suatu aplikasi agar menjadi lebih rapi dan lebih mudah untuk dimaintain dan dikembangkan . MVC merupakan suatu konsep pemrograman yang juga banyak diterapkan akhir-akir ini. Dengan menerapkan MVC dalam membangun suatu aplikasi akan berimbas pada kemudahan pada saat aplikasi tersebut memasuki fase maintenance. Proses pengembangan dan integrasi pun menjadi lebih mudah untuk dilakukan. Ide dasar dari MVC sebenarnya sangat sederhana, yaitu mencoba untuk memisahkan antara model, view, dan controller. Definisi MVC (Model View Control) Model View Controller (MVC) pertama kali diperkenalkan oleh Trygve Reenskaug, pengembang software Smalltalk pada Xerox Palo Alto Research Center pada tahun 1979. Konsep ini membantu memisahkan antara akses data (data access) dengan logika bisnis (business access). Secara lebih detail MVC dibagi menjadi 3 komponen, yaitu : 1. Model Merupakan satu bagian dari MVC, model bertugas untuk berhubungan langsung dengan tugas-tugas CRUD (Create, Read, Update & Delete) pada database, misalnya berhubungan dengan mysql, yang menariknya adalah, framework sudah menyertakan koneksi dengan berbagai jenis database, mulai dari mysql, postgree, oracle, mssql server, dan lain-lain sebagainya, kita tinggal memasukkan nama databasenya dan atribut-atribut seperti host, username, dan

passwordnya saja. Sungguh luar biasa lagi, karena seorang koder tidak lagi melakukan hal-hal klasik melulu dilakukan setiap mengawali koding. Bukan hanya konektivitas dengan database saja, tapi seperti yang saya bicarakan lagi, tugas-tugas create, read, update & delete jauh lebih cepat, mudah, efisien, dan luar biasa. 2. View Jika model berhubungan dengan tugas-tugas database, maka view dikerjakan oleh sang web designer, karena view berisi kode-kode html, css, maupun javascript yang digunakan sebagai tampilan web nantinya. Seorang pembuat view biasanya melakukan pekerjaan dan sedikit berkoordinasi koder intinya, atau bahkan tidak berkoordinasi sama sekali dengan kodernya, tapi hanya mengikuti standarisasi koding framework, sepertinya misalnya pembuatan table data, maupun pagination, dan lain-lain sebagainya. 3. Controller Menjadi tulang punggung koding. Controller yang menghubungkan antara view dan model. Controller yang menghandle inputan dari user. Anggaplah kasusnya seperti user login, ketika tampilan dibuka, controller melihat dari url yang adam kemudian controller mencocokan antara url dengan view yang ada. Jika cocok maka viewnya di tampilkan. Nah misalkan seperti ini, ketika user memasukkan username dan password dan submit, maka controller menerima inputan ini lalu controllerlah yang dia berhubungan langsung dengan model (database) untuk mencocokan apakah yang username dan password yang ada dalam database itu ada dan cocok, controller lah yang menghandle ini semua, yang kemudian jika cocok, maka tugas selanjutnya adalah dilimpahkan kepada view, untuk memperlihatkan tampilan selanjutnya. Gambaran MVC : Controller -> Model -> View sama dengan Input -> Processing -> Output

B.Konfigurasi MVC suatu frameworkUntuk memahami konsep MVC suatu framework harus memahami : 1. Instalasi dan konfigurasi web framework tsb 2. Struktur direktori dalam framework 3. Penerapan MVC (sintaks) Kebutuhan tools: a. Web server (XAMPP, WAMP, dll) b. Editor Web(Mac. Dreamweaver, dll) c. Framework CodeIgniter 1.7.2. Struktur Direktori CodeIgniterStruktur Direktori CodeIgniter 1. Folder system .folder sistem aplikasi yang dibangun Folder system terdiri dari : a) Folder application .tempat menyimpan file aplikasi yang dibangun

b) c) d) e) f) g) h) i) j)

Folder cache .menyimpan semua cache yang dibuat cache library Folder codeigniter .menyimpan file internal codeigniter Folder database .menyimpan driver database Folder fonts .menyimpan font yg digunakan pada sistem Folder helpers .menyimpan helper core dari codeigniter Folder language .menyimpan file bahasa core codeigniter Folder logs .menyimpan semua log generated oleh codeigniter Folder plugin .menyimpan plugin core codeigniter Folder scaffolding .menyimpan semua file yg berfungsi sebagai scaffolding

2. Folder application terdiri dari : a) Folder config .menyimpan konfigurasi aplikasi b) Folder controllers .menyimpan semua file controller dari aplikasi c) Folder errors .menyimpan semua file template error aplikasi d) Folder helpers .menyimpan helper aplikasi (bukan core codeigniter) e) Folder hook .menyimpan hook yg digunakan untuk mengubah alur fungsi core codeigniter f) Folder language .tempat menyimpan bahasa yg digunakan aplikasi g) Folder libraries .menyimpan semua library buatan sendiri (bukan core) h) Folder models .menyimpan semua file model dari aplikasi i) Folder views .menyimpan semua file view dari aplikasi

Instalasi/KonfigurasiInstalasi maupun konfigurasi framework CodeIgniter terletak pada direktori system/application/config. Secara umum ada 4 file yang perlu dilakukan perubahan untuk konfigurasi/instalasi, yaitu: 1. Config.php 2. Database.php 3. Autoload.php 4. Routes.php

1. Pada file config.php Ubahlah baris program berikut : $config['base_url']= "http://example.com/"; Menjadi URL project, misalnya: $config['base_url']= "http://localhost/latihan/"; Base URL merupakan alamat default dari website/aplikasi yg dibuat. Secara default URL tersebut akan digunakan sebagai awal link dalam halaman website/aplikasi.

2. Pada file database.php Ubahlah baris program berikut : $db['default']['hostname'] = "localhost"; $db['default']['username'] = ""; $db['default']['password'] = ""; $db['default']['database'] = ""; Menjadi sesuai konfigurasi koneksi database server, misalnya: $db['default']['hostname'] = "localhost"; $db['default']['username'] = root"; $db['default']['password'] = ""; $db['default']['database'] = latihandb"; Untuk kebutuhan konfigurasi di atas, nama database harus dibuat terlebih dahulu. 3. Pada file autoload.php Ubahlah baris program berikut : $autoload['helper'] = array(); Menjadi : $autoload['helper'] = array('url', 'file', 'form', 'table'); Helper merupakan kumpulan fungsi-fungsi dalam berbagai kategori untuk memudahkan pengembangan aplikasi. Kumpulan helper di atas merupakan helper yang akan diaktifkan secara otomatis diawal program. Beberapa helper yang umum digunakan adalah url, file, form, table, dll. 4. Pada file routes.php Ubahlah baris program berikut : $route['default_controller'] = "welcome"; Menjadi default controller kita, misalnya: $route['default_controller'] = utama"; Default controller ini dimaksudkan sebagai controller yang akan dijalankan pertama kali oleh user. Contoh : http://localhost/latihan/index.php/utama/index Maka hanya perlu ditulis: http://localhost/latihan

Controller Dasar Controller dasar merupakan controller utama dan sederhana, 1. Menampilkan tulisan Selamat Belajar CodeIgniter Misalkan terdapat controller latihan(file latihan.phpdi direktori system/application/controllers/, maka akan terdapat kode program sebagai berikut : b. Jika melalui view dilewatkan suatu variabel, maka variabel tersebut harus berupa variabel array. Contoh : $data[teks.] = Selamat Belajar CodeIgniter; $this->load->view(vlatihan.,$data); Maka pada view vlatihancukup berisi kode :

Pemanggilan Model a. Model dalam konsep MVC merupakan bagian yang menangani pengolahan data ke dan dari database b. Model berisi class dan fungsi seperti Controller, tidak seperti pada View c. Pemanggilan Model hampir sama dengan pemanggilan View, namun perbedaannya dalam pemanggilan model dilakukan dengan pemanggilan fungsi Contoh : Terdapat model mlatihan (file mlatihan.php di direktori system/application/models/) berisi kode program : Maka pemanggilan model mlatihan sebagai berikut : $this->load->model(mlatihan.); echo $this->mlatihan->getData(); Pemanggilan Fungsi Dalam suatu controller dimungkinkan adanya pemanggilan fungsi Contoh : function index(){ echo form_open(latihan/terima.); echo form_input(nim.,.07018111.); echo form_input(nama.,.budiman.); echo form_submit(submit.,.Kirim.); echo form_close(); }

function terima() { echo NIM = .$_POST[nim.]; echo
Nama= .$_POST[nama.]; } Pemanggilan/penggunaan fungsi dapat melibatkan variabel input Misalnya pada fungsi baca akan dilewatkan dua variabel integer dengan alamat : http://localhost/utama/index.php/latihan/baca/5/10 Maka fungsi baca berisi kode program : function baca($bil1, $bil2){ echo Bilangan 1 = .$bil1; echo
Bilangan 2 = .$bil2; }

A. Tutorial MVC Sederhana dengan Swing Buat projectnya lebih dulu dan buat class class sepeerti digambar berikut :

Buat class-class dan interface seperti gambar diatas. Kemudia dilanjutkan denga coding program MVC SayHello yang akan dibuat, codingnya saya bagi menjadi tiga bagian. Control Dibagian ini kita lakukan coding untuk interfaces Confirm dan ListenerMain serta class ControlMain.Interfaces Confirm digunakan untuk memberikan peringatan ke User jika terjadi kesalahan dalam pengisian nama, misal namanya kosong. package achmad.lutfi.controls; /* * * @author Djaloe

* Email [email protected] */ public interface Confirm { void onWarning(String message); } Interfaces ListenerMain digunakan untuk menangkap perubahan nama yang terjadi dimodel dan memberitahukannya ke ViewMain dan menampilkannya ke User Package Djaloe.controls.events; import Djaloe.models.ModelMain; /* * * @author Djaloe * Email [email protected] */ public interface ListenerMain { void onChange(ModelMain modelMain); } Untuk ControlMain, digunakan untuk melakukan proses validasi atas input nama yang diberikan oleh user ke View dan meneruskan data nama tersebut ke model. package Djaloe.controls; import Djaloe.models.ModelMain; import Djaloe.views.ViewMain; /* * * @author Djaloe * Email [email protected] */ public class ControlMain { private ModelMain modelMain; public void setModelMain(ModelMain modelMain) { this.modelMain = modelMain; } public void sayHello(ViewMain viewMain, Confirm confirm){ String nama = viewMain.getTxtNama().getText(); if(nama.trim().isEmpty()){ confirm.onWarning(Nama Tidak Boleh Kosong !!); return; } modelMain.setNama(nama); } }

Model Dikelas ModelMain ini, data yang telah diinputkan diproses dan disimpan sementara dan kemudian memberikan data tersebut ke View untuk ditampilkan ke User. package Djaloe.models; import Djaloe.controls.events.ListenerMain; /* * * @author Djaloe * Email [email protected] */ public class ModelMain { private ListenerMain listenerMain; private String nama; public void setListenerMain(ListenerMain listenerMain) { this.listenerMain = listenerMain; } public void setNama(String nama){ this.nama = nama; if(listenerMain != null){ listenerMain.onChange(this); } } public String sayHello(){ return Hallo + nama + !; } } View Di kelas View ini digunakan untuk menampilkan interface GUi ke User dan digunakan untuk menerima input nama dari User. Untuk kelas ViewMain menggunakan JFrame. /** * * @author Fresh */ public class ViewMain extends javax.swing.JFrame implements Confirm, ListenerMain { private ControlMain controlMain; private ModelMain modelMain; /** Creates new form ViewMain */ public ViewMain() { modelMain = new ModelMain(); controlMain = new ControlMain(); modelMain.setListenerMain(this); controlMain.setModelMain(modelMain);

initComponents(); } private void btnOKActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: controlMain.sayHello(this, this); } . . public JTextField getTxtNama() { return txtNama; } @Override public void onWarning(String message) { JOptionPane.showMessageDialog(rootPane, message, Warning, JOptionPane.WARNING_MESSAGE); } @Override public void onChange(ModelMain modelMain) { JOptionPane.showMessageDialog(rootPane, modelMain.sayHello(), Say Hello, JOptionPane.INFORMATION_MESSAGE); } } Kalo codingnya sudah selesai, coba jalankan projectnya. Tampilannya akan seperti ini :

B. Tutorial PHP Framework Berbasis MVC Tutorial ini berhubungan dengan kelas model untuk proses CRUD (create, update, delete) dengan form serta filtering data. Dan membuat pagination untuk produk pada MVC. Isi tutorial : 1. Model Product 2. ManageController index product edit delete 3. Views header product edit Model Product Menambahkan method untuk membuat url

Kedua, membatasi panjang url sebanyak 30 karakter. Lalu hapus hypen diawal dan akhir dengan trim. Jika url kosong, set default url adalah untitled. Dan terakhir, mencari kecocokan url yang sama di tabel produk. Jika ada url yang cocok/sama, maka dibuat url unik. ManageController Kontroller ini bertugas untuk mengelola produk index Kosongkan aksi index, alihkan saja ke aksi produk. Views Styles Berikut style untuk form dan halaman. Tambahkan di style.css Show

header Tambahkan link untuk kelola produk di header ...