Kelas Controller

Kelas Controller dalam Seme Framework merupakan inti dari semua logika yang ada dalam jangkauan kelas tersebut.

Nama kelas dalam Controller juga berfungsi sebagai identitas dari sebuah alamat URL.

Ketentuan Kelas Controller

Berikut ini adalah ketentuan ketika ingin menggunakan kelas Controller dengan benar supaya dapat berjalan dengan baik:

  • Semua kelas Controller di simpan didalam direktori app/controller.
  • Kelas controller harus extends dari SENE_Controller.
    app
    |-- controller
    |---- blog.php
                    
    isi dari blog.php
    <?php class Blog extends JI_Controller { ... }
  • Dan bisa juga extends dari kelas core yang mana kelas tersebut merupakan hasil extends dari SENE_Controller.
    app
    |-- core
    |---- ji_controller.php
    |-- controller
    |---- home.php
    |---- blog.php
                    
    isi dari ji_controller.php
    <?php class JI_Controller extends SENE_Controller { ... }
    isi dari home.php
    <?php class Home extends JI_Controller { ... }
  • Penamaan nama file controller dan nama kelas controller hanya boleh, diawali oleh huruf, kemudian diteruskan oleh huruf dan atau angka, dan underscore.
    Contoh (benar):
    -nama file:
      faktur_pajak.php
    -nama kelas:
    <?php class Faktur_Pajak extends SENE_Controller { .. }
    Contoh (Salah):
    -nama file:
      1faktur pajak.php
    -nama kelas:
    <?php class 1Faktur Pajak extends SENE_Controller { .. }
  • Nama file kelas controller harus dalam huruf kecil (Lower Case) dan berakhiran .php.
  • Nama kelas dan nama file harus identik tapi boleh tidak sama huruf besar dan atau huruf kecilnya (tidak case sensitive).
    Contoh (benar):
    -nama file:
      faktur_pajak.php
    -nama kelas:
    <?php class Faktur_Pajak extends SENE_Controller { .. }
    Contoh (benar):
    -nama file:
    fakturpajak.php
    -nama kelas:
    <?php class FakturPajak extends SENE_Controller { .. }

Contoh struktur Controller

Berikut ini adalah contoh struktur direktori dari controller:

app
|-- controller
|---- home.php
|---- blog.php
            

Anggap saja kita sudah mengekstrak atau clone Seme Framework ke dalam direktori D:\XAMPP\htdocs\seme_framework.

Jadi ketika kita membuka http://localhost/seme_framework maka Seme Framework akan membuka kelas controller yang ada di app/controller/home.php.

Nama kelas home atau nama file home.php adalah kelas dasar (default) yang akan selalu diakses jika akar URL seperti https://example.com.

Bagaimana seandainya kita akan membuka alamat URL http://localhost/seme_framework/blog, apakah akan muncul?

Jawabannya adalah Seme Framework akan memamnggil file controller app/controller/blog.php jika ada.

Seme Framework will only load controller with filename and its class name are matched.

Kelas SENE_Controller

Kelas SENE_Controller merupakan kelas dasar yang telah memiliki berbagai fungsi (method) didalamnya untuk keperluan pembangunan aplikasi berbasis web.

Ada banyak fungsi dan variabel yang telah tersedia di 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'
  }
}

Private method dalam Seme Framework diawali dengan underscore 2 kali (__).

Private method tidak dapat diakses oleh alamat URL langsung.