Tuesday, April 19, 2016

Membuat core controller sendiri di codeigniter

Membuat core controller sendiri di codeigniter

Tujuan dari membuat core sendiri adalah untuk menjegah terjadinya penulisan ulang function pada sebuah controller. Misalkan, pada sebuah kasus saya mempunyai function "sapa". Mungkin kurang lebih seperti ini function-nya :

function sapa($nama)
{
 $kata = "Hello ".$nama.", bagaimana kabarnya ?";
 return $kata;
}

Saya gak mau function ini di tulis berulang-rulang di tiap function pada controller. Cara-nya adalah dengan membuat core controller sendiri.
Saya menggunakan codeigniter 3.0.4 dan php 5.6
Mungkin diantara kalian ada yang bertanya, "Kenapa gak di buat helper atau library saja ?"

Ya bisa saja function di atas di buat library atau helper, tapi masalahnya adalah kita harus me-load library atau helpernya dulu sebelum memanggil function itu. Jika kita membuat core sendiri, kita tidak usah meload-nya.

Sedikit ngasih tau, pada pratik kali ini kita akan sedikit memodif  core "CI_controller" yang selalu kita extend pada controller dan menggantikannya dengan core controller buatan kita sendiri.

Jika kamu bertanya apa gunanya kita harus wajib meng-extend CI_controller ?
Jawabannya adalah, pada CI_controller terdapat fungsi yang selalu kita gunakan pada saat kita membuat controller, dan otomatis jika kita tidak meng-extend-nya maka fungsi itu tidak akan bisa di gunakan. Fungsi yang terdapat pada CI_controller adalah $this->load , pasti kalian tahu kegunaan fungsi itu buat apa. Yups betul fungsi itu berguna untuk :

  • $this->load->library (...);
  • $this->load->helper(...);
  • $this->load->model(...);
  • $this->load->view(...);
Oke kembali ke materi, cara membuat core controller sangatlah mudah, pertama buat file baru dengan nama MY_controller.php pada application/core, berikut kode nya :

class MY_controller extends  CI_controller
{
 function sapa($nama)
 {
  $kata = "Hello ".$nama.", bagaimana kabarnya ?";
  return $kata;
 }
}

Kedua, tambahkan kode berkut ini pada application/config/config.php, letakan di bagian paling bawah :

function kang_controller($class) 
{
 if (strpos($class, 'CI_') !== 0)
 {
     if (is_readable(APPPATH . 'core/' . $class . '.php'))
     {
      require_once(APPPATH . 'core/' . $class . '.php');
     }
 }
}
 
spl_autoload_register('kang_controller');

Setelah semuanya selesai di lakukan, barulah kamu bisa meng-extend conre controller kamu pada controller. Berikut contoh controller, dan cara pemanggilan function yang terdapat pada core MY_controller.php

class Welcome_controller extends  MY_controller
{
 function index()
 {
  echo $this->sapa("Cahya");
  // hasilnya :: Hello Cahya, bagaimana kabarnya ?
 }
}

Ada satu lagi yang kelupaan, untuk penamaan core harus di awali dengan prefix MY_ , jika kamu tidak mau menggunakan prefix MY_ pada penamaan core mu, kamu bisa sunting application/config/config.php di baris 120 tepatnya pada bagian :

$config['subclass_prefix'] = 'MY_';

Mungkin cukup sekian dulu, jika ada yang kurang paham tulis saja komentar yah :)

auf wiedersehen :)

Saya hanya seorang "newbie" yang baru bisa ngoding lohor kemarin.

3 komentar

Message: Call to undefined method Welcome::sapa()

makasih gan, berkat tutor ente, ane bisa tau caranya pake spl_autoload_register, karena sebelumnya pake __autoload ga bisa, thx infonya :D

Sama-sama gan, semoga bermanfaat :)


EmoticonEmoticon