- Seme Framework
- versi 4.0.3 (ID)
- Persyaratan
- Download & Install
- Pengaturan
- Tutorial
- Perutean URI
- Konstanta
- Variabel Global
- Model
- View
- Controller
- Library
- CLI (command line interface)
- Core
Dasar-dasar MVC
MVC atau Model View Controller merupakan suatu metode pembangunan perangkat lunak yang memisahkan logika aplikasi menjadi beberapa bagian yang dasarkan pada fungsi suatu bagian tertentu. Penyusunan kode didalam Seme Framework akan berupa kelas, properti, dan metode dengan konsep yang sama dengan Pemrograman Berorientasi Objek.
Dalam tutorial ini, tidak ada praktek ngoding. Hanya ada pembahasan teori bagaimana penggunaan Seme Framework supaya tidak kaget. Kadang kala, programmer bingung untuk menggunakan Seme Framework ini, beberapa kode tidak terlihat mata tapi kodenya ada dan dituliskan ketika ngoding. Maka untuk menghindari hal tersebut, kita harus belajar memahami dulu bagaimana cara menyusun kode dengan Seme Framework.
Apa itu Model?
Model merupakan bagian kode khusus yang berfungsi untuk melakukan komunikasi dari kode yang kita bangun terhadap database. Adapun isi dari model ini biasanya, untuk menarik data, menyimpan data, dan menghapus data dari database.
Apa itu View?
View merupakan kumpulan kode yang khusus digunakan untuk mengeluarkan tampilan. Biasanya pada view ini berisi HTML, JavaScript, CSS, dan sedikit PHP yang hanya digunakan untuk mengeluarkan datanya saja.
Apa itu Controller?
Controller merupakan kode yang berisi sebagai jembatan dari Model & View. Pada bagian ini biasanya berisikan kode PHP beserta logika didalamnya. Controller juga bisa diartikan sebagai identitas dari HTTP Request untuk sebuah halaman web.
Dengan pemecahan kode berdasarkan konsep MVC, diharapkan pembangunan aplikasi dapat lebih jelas dan sederhana sehingga lebih mudah untuk dikembangkan dan dikelola dari sisi kode maupun sisi alur proses.
Struktur Kelas
Kelas merupakan konsep penulisan kode dengan mengelompokan sekumpulan kode tertentu menjadi dua bagian utama, yaitu Properti dan Metode. Berikut ini adalah contoh bagan struktur kelas di Seme Framework.
[HAK_AKSES] Nama_Kelas |
---|
[HAK_AKSES] var $nama_properti; |
[HAK_AKSES] function nama_metode(); |
Apa itu Properti pada kelas?
Properti pada kelas merupakan tempat penyimpanan nilai dari kelas tersebut. Properti kalau dalam pemrograman biasa, sering disebut dengan variabel.
Perbedaan Properti dengan Variabel
Properti adalah variabel yang tergabung dengan kelas itu sendiri. Sementara, variabel ketika didalam kelas hanya dapat digunakan dalam metode sebuah kelas.
Contoh potongan kode untuk membedakan properti dan variabel.
<?php
class Nama_Kelas_Panjang_Sekali {
var $ini_properti;
public function metode1(){
$ini_variabel = 'Hello';
$this->ini_properti = $ini_variabel;
}
public function metode2(){
$this->ini_properti = $ini_variabel;
//akan menimbulkan error,
//karena $ini_variabel hanya ada dalam
//ruang lingkup metode1
}
}
//dapat ditulis juga sama dengan
public class Nama_Kelas_Panjang_Sekali {
public $properti_ke1;
public $properti_ke2;
public function nama_metode(){
//isi kode php
}
}
Apa itu Metode pada kelas?
Metode dapat berisikan kumpulan kode atau logika yang ada pada suatu kelas.
Hak Akses pada kelas, properti, dan metode
Baik kelas, properti, ataupun metode memiliki 3 jenis hak akses yaitu:
- Public
- Private
- Protected
Hak akses public merupakan hak akses yang bisa diakses di manapun selama kode itu dipanggil. Pada umumnya hak akses public ini tidak dituliskan (deklarasikan) secara langsung. Jadi setiap Kelas, properti, ataupun metode yang tidak ada awalan public itu akan dianggap public.
Contoh dalam kode
<?php
class Nama_Kelas_Panjang_Sekali {
var $properti_ke1;
var $properti_ke2;
public function nama_metode(){
//isi kode php
}
}
//dapat ditulis juga sama dengan
public class Nama_Kelas_Panjang_Sekali {
public $properti_ke1;
public $properti_ke2;
public function nama_metode(){
//isi kode php
}
}
Hak akses private merupakan hak akses yang hanya bisa diakses didalam kelas tersebut. Hak akses ini memberikan sifat ekslusif dimana proses kode atau penyimpanan variabel didalam properti untuk tidak dapat diubah oleh pihak luar. Begitu juga dengan turunan kelasnya, baik kelas, properti, dan metode ketika memiliki hak akses private tidak dapat mengakses leluhurnya.
Contoh dalam kode:
<?php
private class Nama_Kelas_Panjang_Sekali {
var $properti_ke1;
private $__properti_ke2;
public function nama_metode_public(){
//isi kode php
}
private function __nama_metode_private(){
//isi kode php
}
}
Dalam Seme Framework, hak akses private diberi awalan (prefix) undescore dua kali, contoh $__privateVariabel
.
Hak akses protected merupakan hak akses yang hanya bisa diakses didalam kelas tersebut dan turunannya. Perbedaan dengan hak akses private adalah hak akses private tidak mengizinkan siapapun mengeksekusi atau merubah properti dan metode yang ada pada kelas tersebut.
Pewarisan (Inheritance) pada Kelas
Kelas dapat diturunkan atau diwariskan supaya nilai dari properti ataupun logika yang ada pada metode tidak usah ditulis ulang. Dengan memanfaatkan pewarisan ini, penggunaan Seme Framework akan menyingkat proses pembuatan aplikasi. Karena sebagian kode yang menampung logika tertentu tinggal digunakan. Untuk penggunaan kembali kode yang sudah ada ini, disebut dengan Inheritance atau Pewarisan.
Cara atau perintah untuk menurunkan kelas
Untuk menurunkan sebuah kelas dari Seme Framework, menggunakan kode atau perintah extends
.
Dimana perintah extends
ini akan mengacu kepada nama kelas yang menjadi orang tuanya (Parent Class).
Contoh koding pewarisan di Seme Framework.
Dalam Seme Framework ada kelas SENE_Controller , yang mana kelas ini sudah dibuat sedemikian rupa supaya dapat digunakan kembali.
Berikut ini adalah contoh kelas SENE_Controller yang sudah ada didalam Seme Framework dan akan dijadikan orang tua (parent class) oleh kelas Home
.
Silahkan pahami potongan sebagian kodenya.
<?php
class SENE_Controller {
.
.
.
public function load($model_file_name){
if(file_exists(SEMEROOT.'app/model/'.$model_file_name.'.php')){
require_once SEMEROOT.'app/model/'.$model_file_name.'.php';
}else{
trigger_error('could not find require_once library '.$item.'');
}
}
.
.
.
}
Kemudian kelas SENE_Controller ini akan diturunkan menjadi kelas Home
untuk menampilkan halaman utama menggunakan Seme Framework.
<?php
class Home extends SENE_Controller {
public function index(){
$this->load('d_blog_model');
// ini memanggil metode load dari SENE_Controller
// tanpa harus ngoding lagi
}
}
Kode $this
Penulisan kode $this
ketika sedang dalam kelas controller, maka itu akan mengacu ke kelas controller.
Begitupun ketika dalam kelas model, maka akan mengacu kedalam kelas model tersebut.
Kode $this
ini bisa memiliki banyak arti tergantung dimana kode ini dituliskan.
Kondisi penulisan kode $this
ini disebut dengan penulisan kode kontekstual.
Dimana kode $this
akan bergantung terhadap posisi penulisan kode ini berada.
Dalam penjelasan saat ini kita akan fokus terhadap kelas Home
dan kelas SENE_Controller yang mana sudah dijelaskan dalam potongan kode diatas.
Konteks $this
dalam contoh kode diatas akan mengacu pada method atau properti baik dalam kelas Home
maupun kelas SENE_Controller .
Setiap perintah $this
isinya akan berbeda-beda tergantung kelas utama dan kelas yang di extends
-nya.
Yang mebedakannya adalah akan mengacu terhadap properti apabila tidak diakhiri dengan simbol kurung ()
.
Dan akan mengarah ke metode apabila diakhiri dengan simbol kurung ()
.
Untuk lebih jelasnya mari kita perhatikan dengan baik contoh penulisan kode $this
dalam 2 konteks yang berbeda.
Contoh koding $this
dalam konteks Controller
Berikut ini adalah contoh koding dalam konteks Controller.
<?php
class Home extends SENE_Controller {
public function index(){
$this->load('d_blog_model');
// ini memanggil metode load dari SENE_Controller
// tanpa harus ngoding lagi
}
}
Dalam contoh konteks ini, kode $this->load
mengacu pada metode yang ada pada SENE_Controller .
Contoh koding $this
dalam konteks Model
Berikut ini adalah contoh koding dalam konteks Model
<?php
class B_User_Model extends SENE_Model {
public $nama_tabel = 'b_user';
public function tambah_data(){
$data_baru = array('nama'=>'Sandi','Kelas'=>'2c');
return $this->db->insert(
$this->nama_tabel,
$data_baru
);
}
}
Pada kodingan contoh Model, ada 2 perintah $this
.
$this
yang pertama mengacu pada properti$db
yang ada di dalamSENE_Model
.Properti
$db
tidak ada dalam kelasB_User_Model
karena properti tersebut adanya diSENE_Model
.Kemudian, properti
$db
itu mengacu terhadap kelasSENE_MySQLi_Engine
. Jadi,SENE_Model
itu memiliki properti$db
yang berisiSENE_MySQLi_Engine
.Begitu juga kodingan
$this->db->insert
, isi kodenya ada di dalamSENE_MySQLi_Engine
bukan di dalam kelasSENE_Model
.Sementara pada
$this
kedua, pada kodingan$this->nama_tabel
mengacu pada properti$nama_tabel
yang ada di dalam kelasB_User_Model
. Kodingnya pun bisa kita lihat, karena ada didalam kelas yang sama.Jadi, properti
$nama_tabel
itu tidak ada di dalamSENE_Model
maupunSENE_MySQLi_Engine
.