Tulisan lalu saya membahas tentang framework Laravel, kini saya ini membahas kembali CI (CodeIgniter) sekaligus melanjuti artikel lama saya. Dan memang sudah cukup lama sekali saya tidak menulis CI setelah menggunakan Laravel. Tidak dipungkiri berdasarkan statistik dari JetPack bahwa situsali lebih banyak di akses tentang bagaimana cara belajar CI 3? ? Oleh karenanya saya merasa seperti ada hutang yang perlu dilunasi hehehe ?

Kembali ke topik, tulisan lalu mengenai belajar CI di sini saya telah memberikan pengetahuan dasar mengenai routing dan helper. Sekarang kita membahas tentang Controller-nya dan pemanfaatanya.

Syarat Membuat Controller

Di CI, cara melihat itu controller sangat mudah Anda hanya perlu melihatnya pada URL seperti berikut:

https://domain.com/index.php/welcome

welcome adalah nama controllernya, index.php ada karena pengaturan default dari web server seperti Apache atau Nginx. Anda bisa menghilangnya jika Anda mau, silahkan baca mengenai materi dasar-dasar routing.

ci-controller

Controller pada CI terletak pada direktori Application -> Controllers :

ci-controller-2

Adapun syarat-syarat controller dalam CI:

* Secara umum harus diletakan dalam direktori `application` -> `controllers`.

Anda bisa saja mengganti direktori application dengan yang lain, tapi ini menjadi tidak standard CI. * Nama berkas dalam controller harus berawalan huruf kapital contohnya: Book.php, Blog.php, Download.php, dan sebagainya. * Nama class pada controller harus sama dengan nama berkas, dan harus berawalan huruf kapital juga. * Penamaan berkas pada controller memiliki larangan yang sama dengan penamaan class yakni:

* Tidak berawalan angka
* Tidak boleh mengandung karakter simbol
* hanya boleh huruf dan angka dan angka tidak boleh di awal.


* Berkas setidaknya wajib atau sekurang-kurangnya berisi seperti kode di bawah ini:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Duren extends CI_Controller {

    public function index()
    {

    }
}
* `function index()` wajib ada.

Pemanfaatan Public Function

Di controller, public function dapat di akses langsung oleh peramban (browser), urutan URL nya seperti berikut:

https://domain.com/index.php/controller/function/id/id2/id3

Contoh:

* Buat berkas bernama `Personal.php`
* Isikan kode sumber di bawah ini:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Personal extends CI_Controller {

    public function index()
    {
        echo "isi namanya dulu...";
    }

    public function udin()
    {
        echo "Halo namaku Udin";
    }
}

Hasilnya akan seperti gambar di bawah ini:

ci-controller-udin

Contoh:

* Buat berkas bernama Produk.php
* Isikan seperti kode di bawah ini:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Produk extends CI_Controller {

    public function index()
    {
        echo "Semuanya";
    }

    public function sepatu($merk,$warna,$no)
    {
        echo "Jenis Produk: Sepatu<br/>";
        echo "Merk: $merk<br/>";
        echo "Warna: $warna<br/>";
        echo "Nomor: $no";
    }
}

Hasilnya akan seperti gambar di bawah ini:

ci-controller-uri-segmen

Pemanfaatan Private Function

Perlu diketahui sebagaimana dari class jika Anda tidak mendeklarasikan_ function_ dengan deklarasi public, private, ataupun protected. Maka defaultnya adalah public (baca: Konsep OOP), dan di CI public function bisa langsung diakses melalui peramban.

Adakalanya kita butuh suatu function dalam controller kita tidak dapat diakses langsung, oleh karenannya tambahkan saja private pada function tersebut maka peramban tidak akan bisa mengaksesnya secara langsung.

Contoh:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->view('welcome_message');
    }

    private function unggah(){
        echo "mengunggah";
    }
}

Hasilnya CI menampilkan kode 404 pada peramban.

ci-controller-private

Mudah bukan? Semoga bermanfaat.?