- 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
Model
Kelas Model dalam Seme Framework merupakan kumpulan kode yang dibuat secara manual
untuk berinteraksi dengan sistem database yang diturunkan dari kelas SENE_Model
atau dari turunannya.
Dengan dipisahkannya logika utama dengan logika untuk komunikasi dengan sistem database, diharapkan dapat meningkatkan reusability dan kerapihan penempatan file kode sumber.
Daftar Isi
Syarat dan Ketentuan
Berikut ini adalah syarat dan ketentuan yang harus dipenuhi ketika ingin menggunakan kelas Model dengan benar supaya dapat berjalan dengan baik.
Lokasi
Semua file model di simpan di dalam direktori app/model
.
Pembuatan Direktori
Pembuatan direktori untuk model diperbolehkan selama masih di dalam app/model
.
Struktur File dan Direktori Kelas Model
Berikut ini adalah contoh ilustrasi lokasi file dan direktori untuk kelas model
app/
└── model/
├── front/
| ├── user_model.php
| └── blog_model.php
└── admin/
├── user_model.php
└── blog_model.php
Aturan Penamaan
Ada beberapa aturan untuk penamaan kelas model. Namun biasanya, 1 kelas model merepresentasikan 1 tabel pada sistem database. Nama kelas dan nama file harus identik tapi tidak harus sama dalam kapitalisasi huruf (lowercase & uppercase). Aturan penamaan ini dibuat supaya kegunaan, nama file dan kelas model tidak ambigu.
Nama File
Untuk nama file, sesuaikan dengan nama tabel dan diberi akhiran _model.php
.
Nama file hanya boleh menggunakan huruf kecil (lowercase), angka dan underscore sebagai pemisah.
Tapi tidak boleh diawali oleh angka dan underscore.
Contoh nama tabelnya b_user
jadi nama file modelnya b_user_model.php
.
Nama Kelas
Nama kelas sesuaikan dengan nama tabel dan diberi akhiran _Model
.
Nama kelas hanya boleh menggunakan huruf, angka, dan underscore sebagai pemisah.
Tapi tidak boleh diawali dengan angka atau underscore.
Setiap awalan huruf dan atau setelah pemisah underscore dimulai dengan huruf kapital (uppercase).
Contoh nama tabelnya b_user
jadi nama kelas modelnya B_User_Model
.
Jumlah Kelas dalam 1 file
Kelas model di Seme Framework hanya boleh menampung 1 kelas model dalam 1 file model.
Contoh untuk tabel b_user
pada file model b_user_model.php
hanya memiliki kelas B_User_Model
, tidak ada kelas model lainnya dalam satu file yang sama.
Turunan Kelas
Model harus menurunkan kelas dengan kode extends
dari kelas SENE_Model
.
Begitupun juga ketika menggunakan fitur Core , kelas model core harus menurunkan dengan cara yang sama.
Konstruktor
Setiap kelas model wajib mendeklarasikan konstruktor kelas
dan costructor parent
-nya.
<?php
class Blog_Model extends SENE_Model{
var $tbl = 'blog';
var $tbl_as = 'b';
public function __construct(){
parent::__construct();
...
}
...
}
Kelas SENE_Model
Kelas SENE_Model merupakan kelas dasar yang telah memiliki berbagai fungsi (metode) didalamnya untuk keperluan komunikasi dengan sistem databse untuk pembangunan aplikasi berbasis web menggunakan Seme Framework. Ada banyak metode dan properti yang telah tersedia pada kelas SENE_Model ini.
Sinopsis Kelas SENE_Model
Berikut ini adalah sinopsis atau gambaran isi kelas SENE_Model.
abstract class SENE_Model
{
public $db;
protected $directories;
protected $config;
public $field = array();
public function __construct(){ ... }
private function loadEngine($db) { ... }
public function __encrypt($val) { ... }
public function __decrypt($val) { ... }
public function __decrypt($val) { ... }
}
Properti $db
Properti $db
pada kelas SENE_Model berisikan properti dan metode untuk berinteraksi dengan sistem database.
Adapun tujuan dari properti kelas ini adalah menghasilkan kode SQL
yang cocok terhadap sistem database tertentu tanpa perlu menghafal kode SQL
.
Didalam properti ini juga ada kumpulan metode untuk melakukan proses Query Builder.
Query Builder
Query Builder merupakan kumpulan metode yang ada pada properti $db
di dalam kelas SENE_Model
yang dapat digunakan untuk menyusun kode SQL
.
Metode ini dapat digunakan secara berantai, dan diakhiri oleh metode pengakhiran seperti get , atau get_first , atau insert , atau update , atau delete .
Kegunaan Query Builder
Berikut ini adalah beberapa kegunaan dengan menggunakan query builder:
- Mempercepat dan mempermudah proses pembuatan kelas model di Seme Framework.
- Tidak usah menghafal urutan pengkodisian kode SQL. Query Builder urutan kondisinya bebas, selama diakhiri oleh metode pengakhiran.
-
Tidak usah ganti kode ketika ganti sistem database. Kode
SQL
untuk setiap sistem database berbeda. Dengan Query Builder ini akan otomatis memilihkan kode SQL yang cocok dengan sistem database yang dipakai.
Kelemahan Query Builder
Berikut ini adalah beberapa kelemahan dengan menggunakan query builder:
-
Query Builder terbatas, tidak sebebas query
SQL
secara manual. - Query Builder tidak dapat menjalankan query yang sangat kompleks.
Meskipun ada kelemahannya, Seme Framework telah menyediakan metode khusus sebagai alternatif untuk mengeksekusi kode SQL
secara manual, yaitu dengan menggunakan metode Query .
Cara Menggunakan Query Builder
Berikut ini adalah beberapa cara penggunaan untuk Query Builder.
<?php
class Blog_Model extends SENE_Model{
var $tbl = 'blog';
var $tbl_as = 'b';
public function __construct(){
parent::__construct();
}
public function getAll(){
$this->db->from($this->tbl,$this->tbl_as);
return $this->db->get();
}
public function countAll(){
$this->db->select_as('COUNT(*)','total',0);
$this->db->from($this->tbl,$this->tbl_as);
$d = $this->db->get_first();
if(isset($d->total)) return $d->total;
return 0;
}
public function getById($id){
$this->db->where('id',$id);
$this->db->from($this->tbl,$this->tbl_as);
return $this->db->get_first();
}
public function set($di=array()){
$this->db->insert($this->tbl,$di);
return $this->db->last_id;
}
public function update($id,$du=array()){
$this->db->where('id',$id);
return $this->db->update($this->tbl,$du);
}
public function del($id){
$this->db->where("id",$id);
return $this->db->delete($this->tbl);
}
}
Debug SQL
Seme Framework memiliki fitur atau penanda (flag) untuk melakukan debug terhadap query atau kode SQL
yang dilakukan. Cukup menambahkan penanda 1 pada akhir parameter dari setiap metode yang digunakan.
- $this->db->get('object',
1
) - $this->db->get_first('object',
1
) - $this->db->insert($this->tbl,$di,0,
1
) - $this->db->update($this->tbl,
1
); - $this->db->delete($this->tbl,
1
);