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';
  }
}

Perhatian

Pastikan bahwa nama kelas dan nama file telah identik. Apabila nama file dan nama kelas sudah identik, tapi tidak sama dengan alamat URL yang diminta maka akan menghasilkan error 404 (not found).

Perhatian

Apabila nama file cocok dengan permintaan alamat url, tapi tidak cocok dengan nama kelas. Maka akan menimbulkan error 500.

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'
  }
}

Asal kamu tahu

Private method dalam Seme Framework diawali dengan underscore 2 kali (__) dan tidak dapat diakses oleh alamat URL langsung.

Masih bingung? Pelajari lagi Hak Akses Kelas untuk Seme Framework.