Skip to main content

Tutorial HMVC CodeIgniter 3: Struktur Folder & Contoh Modul untuk Pemula

Diperbarui: 5 Desember 2025

Ringkasan cepat:

  • HMVC (Hierarchical Model View Controller) di CodeIgniter 3 membuat setiap fitur aplikasi menjadi modul sendiri (punya controller, model, dan view di satu folder).
  • Dibanding MVC biasa, HMVC lebih enak untuk project besar atau dikerjakan tim: struktur rapi, kode lebih mudah dipisah, dan modul bisa dipakai ulang.
  • Struktur dasar HMVC: application/modules/nama_modul/controllers, models, dan views + file MY_Controller dan library HMVC di application/core dan third_party/MX.
  • Tutorial ini memakai pola umum Modular Extensions HMVC untuk CodeIgniter 3: cukup tambah beberapa file core, buat folder modules, lalu buat modul seperti blog atau pegawai.
  • Dari sisi syariat, gunakan framework ini untuk projek yang halal dan pastikan server/hosting & tools yang dipakai legal (bukan bajakan), jujur terhadap klien, dan tidak dipakai membangun aplikasi maksiat.

Daftar isi

Kapan sebaiknya memakai HMVC di CodeIgniter 3?

Pertimbangkan memakai HMVC ketika:

  • Aplikasi web mulai punya banyak fitur (auth, produk, blog, laporan, API, dsb.) dan folder controllers/views sudah terasa penuh.
  • Project dikerjakan lebih dari satu programmer, sehingga butuh pemisahan modul yang jelas untuk tiap orang.
  • Kamu ingin membuat modul yang bisa dipakai ulang di beberapa project, misalnya modul auth, user management, atau blog.
  • Mulai terbiasa dengan MVC bawaan CodeIgniter dan ingin struktur proyek lebih terorganisir.

Untuk aplikasi kecil (satu halaman landing page atau CRUD sederhana), pattern MVC biasa sudah cukup. HMVC baru terasa manfaatnya untuk project jangka panjang atau yang terus bertambah fiturnya.

Apa itu HMVC di CodeIgniter 3 & kelebihannya?

1. Pengertian singkat HMVC

HMVC adalah singkatan dari Hierarchical Model View Controller. Di CodeIgniter 3, HMVC berarti kamu mengatur kode dalam bentuk modul yang masing-masing punya:

  • Controller sendiri
  • Model sendiri
  • View sendiri

dan semuanya berada dalam satu folder modul, misalnya:

application/
  modules/
    blog/
      controllers/
      models/
      views/
    auth/
      controllers/
      models/
      views/

Berbeda dengan MVC biasa yang semua controller disimpan di application/controllers, semua view di application/views, dan semua model di application/models.

2. Kelebihan HMVC

  • Lebih modular: setiap fitur jadi paket sendiri, mudah dihapus atau dipindah.
  • Mudah dikerjakan tim: satu orang pegang modul auth, yang lain produk, dan seterusnya.
  • Lebih rapi untuk project besar: struktur folder tidak cepat “berantakan”.
  • Re-use: modul bisa digunakan di project lain dengan sedikit penyesuaian.

3. HMVC di CodeIgniter 3 pakai apa?

CodeIgniter 3 sendiri tidak membawa HMVC secara bawaan. Praktiknya, developer memakai library eksternal seperti Modular Extensions HMVC yang menambahkan class MX_Controller, loader khusus modul, dan dukungan struktur folder modules.

Syarat & persiapan sebelum mengaktifkan HMVC

1. Lingkungan pengembangan (XAMPP/Laragon/hosting)

  • Server lokal (XAMPP, Laragon, dsb.) sudah berjalan normal dan bisa membuka http://localhost/.
  • Folder project CodeIgniter 3 sudah dibuat dan bisa diakses tanpa error.
  • PHP versi masih kompatibel dengan CodeIgniter 3 (banyak yang pakai PHP 7.x, sebagian sudah menguji di PHP 8.x dengan sedikit penyesuaian).

2. Dasar CodeIgniter yang sebaiknya sudah dikuasai

  • Struktur dasar CI3 (folder application, system, index.php).
  • Cara membuat controller dan view sederhana.
  • Cara mengatur config.php, autoload.php, dan routes.php.

3. Catatan syariat & etika

  • Gunakan CodeIgniter & tool pendukung yang legal (lisensi asli/opensource yang sah).
  • Gunakan skill coding untuk aplikasi yang halal (bukan untuk judi online, pornografi, penipuan, riba, dsb.).
  • Jujur terhadap klien: jelaskan batasan sistem, jangan memanipulasi data log atau laporan demi keuntungan sesaat.

Langkah-langkah konfigurasi HMVC CodeIgniter 3

Berikut adalah pola konfigurasi yang umum dipakai di banyak tutorial HMVC CodeIgniter 3. Kamu bisa menyesuaikan nama folder sesuai kebutuhan, tapi prinsipnya sama.

Langkah 1 – Pastikan CodeIgniter 3 sudah berjalan normal

  1. Instal CodeIgniter 3 di folder htdocs/www (misalnya ci-hmvc-tutorial).
  2. Atur base_url di application/config/config.php.
  3. Coba akses http://localhost/ci-hmvc-tutorial/ → pastikan halaman welcome CI muncul.

Langkah 2 – Tambah library HMVC (Modular Extensions)

Struktur akhir yang ingin kita capai kurang lebih seperti ini:

application/
  core/
    MY_Controller.php
  third_party/
    MX/
      Base.php
      Loader.php
      Modules.php
  modules/
    (nanti diisi modul, misalnya "blog")

File di dalam third_party/MX berisi class tambahan (Loader, Modules, dsb.) yang memungkinkan CodeIgniter memanggil controller dan view dari masing-masing modul secara otomatis.

Langkah 3 – Buat file MY_Controller

Buat file application/core/MY_Controller.php dengan isi contoh seperti ini:

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

require APPPATH . 'third_party/MX/Controller.php';

class MY_Controller extends MX_Controller
{
    public function __construct()
    {
        parent::__construct();
        // Tempat yang enak untuk load helper/library global
        $this->load->helper('url');
    }
}

Nantinya, semua controller di modul cukup extends MY_Controller agar otomatis memakai loader HMVC dan helper global yang kamu pasang di sini.

Langkah 4 – Buat folder modules

  1. Di dalam folder application, buat folder baru bernama modules.
  2. Di dalam modules, setiap modul akan punya subfolder sendiri:
    • application/modules/blog/
    • application/modules/auth/
    • dan seterusnya.

Langkah 5 – Sesuaikan autoload (opsional tapi disarankan)

Buka application/config/autoload.php, kamu bisa menambahkan helper dan library yang sering dipakai:

$autoload['helper'] = array('url');
$autoload['libraries'] = array('database', 'session');

Ini bukan bagian wajib HMVC, tapi membuat development lebih nyaman.

Langkah 6 – Atur routes jika perlu

HMVC memungkinkan module memuat route sendiri, tapi untuk pemula cukup pakai application/config/routes.php. Misalnya, nanti kita punya modul blog dengan controller Blog, maka:

$route['blog'] = 'blog/blog/index';

Artinya, ketika user membuka http://localhost/ci-hmvc-tutorial/blog, CodeIgniter akan memanggil modul blog, controller Blog, method index().

Langkah 7 – Uji HMVC dengan modul sederhana

Setelah file core & folder modules siap, langkah berikutnya adalah membuat modul yang benar-benar berjalan. Di bawah, kita buat contoh modul blog sederhana.

Contoh modul HMVC CodeIgniter 3: Modul Blog sederhana

1. Struktur folder modul blog

Buat struktur seperti ini:

application/
  modules/
    blog/
      controllers/
      models/
      views/

2. Controller: application/modules/blog/controllers/Blog.php

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

class Blog extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('blog/Blog_model', 'blog');
    }

    public function index()
    {
        $data['title'] = 'Daftar Artikel Blog';
        $data['posts'] = $this->blog->get_posts();

        $this->load->view('blog/index', $data);
    }
}

3. Model: application/modules/blog/models/Blog_model.php

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

class Blog_model extends CI_Model
{
    public function get_posts()
    {
        // Contoh data dummy, nantinya bisa diganti query database
        return array(
            array(
                'title' => 'Belajar HMVC CodeIgniter 3',
                'slug'  => 'belajar-hmvc-codeigniter-3'
            ),
            array(
                'title' => 'Membuat Modul Blog Sederhana',
                'slug'  => 'membuat-modul-blog-sederhana'
            )
        );
    }
}

4. View: application/modules/blog/views/index.php

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="utf-8">
    <title><?= $title; ?></title>
</head>
<body>
    <h1><?= $title; ?></h1>

    <ul>
        <?php foreach ($posts as $post): ?>
            <li>
                <strong><?= $post['title']; ?></strong>
                (<?= $post['slug']; ?>)
            </li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

5. Uji modul di browser

  1. Pastikan route di routes.php: $route['blog'] = 'blog/blog/index';
  2. Buka http://localhost/ci-hmvc-tutorial/blog.
  3. Kalau konfigurasi benar, kamu akan melihat judul “Daftar Artikel Blog” dan daftar 2 artikel dummy.

Tips penting saat memakai HMVC di CodeIgniter 3

  1. Konsisten penamaan folder & class
    Nama folder modul (misalnya blog) sebaiknya huruf kecil, nama controller Blog.php dengan class Blog. Ini meminimalkan error “controller not found”.
  2. Jangan jadikan modul “tempat sampah”
    Satu modul = satu domain fitur yang jelas (auth, blog, produk, laporan). Hindari modul yang isinya campur-aduk.
  3. Manfaatkan MY_Controller
    Simpan logic umum (cek login, load theme, dsb.) di MY_Controller supaya modul lain tidak perlu copy–paste.
  4. Dokumentasikan struktur modul
    Minimal tulis README singkat tentang apa fungsi modul tersebut dan dependency-nya (library, helper, tabel database).
  5. Jaga niat & kejujuran
    Aplikasi bisa jadi ladang pahala (misalnya sistem zakat, pendidikan, UMKM halal) atau sebaliknya; kembalikan ke apa yang kamu bangun dengan skill ini.

Risiko & kesalahan umum pemula ketika pakai HMVC

  • Controller masih extends CI_Controller sehingga fitur HMVC (load modul lain, dll.) tidak bekerja.
  • Struktur folder salah (misalnya module bukan modules, atau typo nama folder).
  • Library HMVC tidak dimuat dengan benar di third_party/MX atau file MY_Controller salah path.
  • Routing membingungkan karena semua modul di-route ke URL yang mirip tanpa dokumentasi.
  • Over-modularisasi: modul terlalu banyak dan terlalu kecil sehingga justru sulit dikelola.

FAQ seputar HMVC CodeIgniter 3

1. Apakah HMVC bawaan CodeIgniter 3?

Tidak. CodeIgniter 3 tidak menyediakan HMVC secara resmi. HMVC di CI3 biasanya memakai ekstensi pihak ketiga seperti Modular Extensions yang menambahkan class dan loader khusus untuk modul.

2. Apakah semua project wajib pakai HMVC?

Tidak. Untuk CRUD sederhana atau aplikasi kecil, MVC biasa sudah cukup. HMVC lebih terasa manfaatnya ketika project makin besar, banyak fitur, dan dikerjakan tim.

3. Apakah HMVC bekerja di shared hosting?

Bekerja, selama server mendukung CodeIgniter 3 secara umum. HMVC hanya menambah struktur folder dan beberapa class loader; tidak ada kebutuhan server khusus di luar itu.

4. Boleh campur modul HMVC dengan controller “biasa” di application/controllers?

Boleh. Kamu bisa punya sebagian fitur sebagai modul HMVC dan sebagian lain tetap menggunakan pola MVC standar. Yang penting, route dan struktur foldernya jelas.

5. Apakah HMVC membuat aplikasi lebih lambat?

Overhead HMVC pada CodeIgniter 3 umumnya sangat kecil dibanding benefit kerapian kode. Bottleneck utama aplikasi web biasanya ada di query database, bukan di layer HMVC-nya.

Baca juga di Beginisob.com

Comments

Edukasi Terpopuler

Connect With Us

Copyright @ 2023 beginisob.com, All right reserved