- 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
Kelas Controller
Kelas Controller dalam Seme Framework merupakan inti dari semua logika yang ada dalam jangkauan kelas tersebut. Nama kelas dan nama file Controller akan digunakan sebagai identitas dari permintaan URL.
Daftar Isi
Syarat & Ketentuan
Berikut ini adalah syarat dan ketentuan yang harus dipenuhi ketika ingin menggunakan kelas Controller dengan benar supaya dapat berjalan dengan baik.
Lokasi
Semua controller di simpan di dalam direktori app/controller
.
Aturan Penamaan
Penamaan nama file controller dan nama kelas controller hanya dapat diawali dengan huruf, kemudian diikuti dengan huruf dan atau angka, dan/atau garis bawah.
Kemudian untuk Nama kelas dan nama file harus identik, tapi boleh beda urutan pengkapitalan pada nama kelas.
Sementara untuk nama file ditulis dengan huruf kecil tidak boleh kapital. Baru bisa diikuti dengan angka, dan/atau underscore serta diberi akhiran .php
.
Jumlah kelas controller dalam 1 file
Seme Framework hanya mengizinkan 1 kelas controller dalam satu file yang sama. Begitu juga dengan nama metode dalam 1 kelas harus bersifat unik (tidak boleh sama).
Turunan Kelas
Controller harus menurunkan kelas dengan kode extends
dari kelas SENE_Controller .
Begitupun juga ketika menggunakan fitur Core , kelas controller core harus menurunkan dengan cara yang sama.
Konstruktor Kelas
Setiap kelas controller wajib mendeklarasikan konstruktor kelas, berikut ini adalah contoh kodenya.
<?php
class Home extends SENE_Controller{
// WAJIB konstruktor kelas
public function __construct(){
//WAJIB konstruktor parent kelas
parent::__construct();
}
...
}
Metode Index
Metode index
wajib ada untuk setiap turunan dari kelas SENE_Controller .
Defaults
Nama default dari kelas controller adalah Home
.
Sementara nama default dari metode adalah index
.
Dan file name default dari controller adalah home.php
.
Jadi, pastikan untuk selalu memeriksa nama dan isi file controller baik didalam direktori app/controller
maupun direktori lain didalamnya.
Direktori Spesial: admin
Seme Framework mendukung direktori spesial untuk pembuatan halaman admin (app/controller/admin
).
Direktori ini memiliki perlakuan khusus dalam pemetaan ulang URL Request. Pelajari selengkapnya tentang halaman admin.
Kedalaman Direktori
Seme Framework hanya mendukung 1 tingkat lebih dalam direktori dari mulai app/controller
.
Dan 1 tingkat lebih dalam juga untuk direktori spesial admin.
Berikut ini adalah contoh susunan file dan direktori untuk controller.
app/
└── controller/
├── admin/
| ├── sales/
| | ├── online.php
| | ├── offline.php
| | └── report.php
| ├── login.php
| ├── logout.php
| └── dashboard.php
|── product/
| ├── home.php
| ├── search.php
| └── detail.php
|── login.php
|── register.php
|── forgot.php
└── about.php
Contoh Benar Salah Syarat Controller
Berikut ini adalah berbagai contoh untuk salah atau benar pemenuhan syarat dari penamaan file dan kelas controller.
/**
* CONTOH BENAR
* -nama file:
* faktur_pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class Faktur_Pajak extends SENE_Controller { .. }
/**
* CONTOH BENAR
* -nama file:
* fakturpajak.php
* -nama kelas: FakturPajak
*/
<?php class FakturPajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: ada spasi
* -nama file:
* faktur pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class Faktur_Pajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: diawali angka
* -nama file:
* 1faktur_pajak.php
* -nama kelas: 1Faktur_Pajak
*/
<?php class 1Faktur_Pajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: nama kelas tidak identik, beda - dan _
* -nama file:
* faktur-pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class 1Faktur_Pajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: nama kelas dan nama file pakai -
* -nama file:
* faktur-pajak.php
* -nama kelas: Faktur-Pajak
*/
<?php class 1Faktur-Pajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: nama kelas pakai -
* -nama file:
* faktur_pajak.php
* -nama kelas: Faktur-Pajak
*/
<?php class 1Faktur-Pajak extends SENE_Controller { .. }
/**
* CONTOH SALAH: isi kelas tidak ada kelas constructor
* -nama file:
* faktur_pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class Faktur_Pajak extends SENE_Controller {
public function index(){
echo 'Thankyou for using Seme Framewrok';
}
}
/**
* CONTOH SALAH: isi kelas tidak ada metode index
* -nama file:
* faktur_pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class Faktur_Pajak extends SENE_Controller {
public function __construct(){
parent::__construct();
}
}
/**
* CONTOH SALAH: isi kelas metode kelas konstruktor tidak lengkap
* -nama file:
* faktur_pajak.php
* -nama kelas: Faktur_Pajak
*/
<?php class Faktur_Pajak extends SENE_Controller {
public function __construct(){
}
public function index(){
echo 'Thankyou for using Seme Framewrok';
}
}
Cara Kerja
Seme Framework akan memuat controller dengan permintaan URI. Biasanya ada hubungan satu-ke-satu antara string URL dan kelas/metode pengontrol yang sesuai. Segmen dalam URI biasanya mengikuti pola ini:
example.com/class/method/parameter1/parameter2/.../parameterN
Atau apabila menggunakan direktori:
example.com/directory/class/method/parameter1/parameter2/.../parameterN
Seme Framework hanya akan memuat pengontrol dengan nama file dan nama kelasnya cocok. Namun, Seme Framework memiliki dukungan untuk Pemetaan Ulang Kontroler URI.
Controller Spesial: Notfound
Error 404 atau Notfound adalah kontroler khusus yang berfungsi sebagai fallback jika file Controller tidak ditemukan serta persyaratannya tidak terpenuhi.
Error 5xx
Kesalahan 500 atau kode 5xx lainnya, biasanya disebabkan oleh nama kelas yang tidak cocok dengan nama file. Namun, kondisi ini juga dapat disebabkan oleh kesalahan pada kode sumber.
Kelas SENE_Controller
Kelas SENE_Controller merupakan kelas dasar yang telah memiliki berbagai fungsi (metode) didalamnya untuk keperluan pembangunan aplikasi berbasis web. Ada banyak metode dan properti yang telah tersedia pada kelas SENE_Controller ini.
Penggunaan Dasar
Berikut ini adalah cara penggunaan dasar dari Kelas Controller di Seme Framework.
Controller Default
Berikut ini adalah source code dari kelas home:
<?php
class Home extends SENE_Controller{
public function __construct(){
parent::__construct();
}
public function index(){
echo 'Thankyou for using Seme Framewrok';
}
}
Controller untuk error 404 (not found)
Controller not found biasanya digunakan untuk aplikasi berbasis web karena mungkin saja ada kesalah URL atau data di aplikasi sudah dihapus atau disembunyikan.
Controller not found ini sangat penting untuk menghasilkan pengalaman yang baik terhadap pengguna.
<?php
class Notfound extends SENE_Controller{
public function __construct(){
parent::__construct();
}
public function index(){
header("HTTP/1.0 404 Not Found");
echo '404 Notfound';
}
}
Pembatasan akses pada method dan properti
Seme Framework telah mendukung deklrasi untuk private method, private properti, protected method dan protected properti.
<?php
class Home extends SENE_Controller{
var $public_var = 'Yi-Ha!'
var $__underWear = 'My Private Things'
public function __construct(){
parent::__construct();
}
private function __processFile(){
return true;
}
public function index(){
echo 'not found'
}
}