CodeIgniter4: Konfigurasi Awal dan Pola MVC
Published:
Framework CodeIgniter menyediakan kerangka dasar yang kuat dan fleksibel untuk pengembangan aplikasi web berbasis PHP. Pada modul ini, kita mempelajari konfigurasi awal project CI4, penggunaan command line, migration dan seeder, pengaturan database, routing, pemanfaatan library-helper, serta implementasi pola MVC (Model-View-Controller).
Artikel ini menekankan satu hal penting: aplikasi yang baik bukan hanya berjalan, tetapi juga terstruktur. Dengan alur kerja berbasis CLI, konfigurasi berbasis environment, dan pemisahan tanggung jawab ala MVC, pengembangan menjadi lebih cepat, rapi, dan mudah dirawat.
1. Konfigurasi Awal di CodeIgniter 4
File konfigurasi utama tersimpan di folder app/Config. Selain konfigurasi bawaan, kita juga bisa membuat konfigurasi kustom.
Contoh membuat file config baru:
php spark make:config MySite
Contoh isi app/Config/MySite.php:
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class MySite extends BaseConfig
{
public string $siteName = 'Web Unusia';
public string $siteEmail = 'nama@gmail.com';
}
Lalu akses dari controller:
public function index()
{
$config = config('MySite');
echo "Selamat Datang di {$config->siteName}. Kirim kritik dan saran ke {$config->siteEmail}";
}
2. Environment Variables (.env)
CodeIgniter 4 menggunakan file .env untuk mengelola konfigurasi berdasarkan lingkungan (development, testing, production).
Keuntungan utama:
- Nilai sensitif (misalnya password DB) tidak hardcoded di source code.
- Mudah berpindah antar lingkungan tanpa mengubah banyak file.
- Aman dan praktis untuk deploy.
Contoh pengaturan database di .env:
database.default.hostname = localhost
database.default.database = ci4
database.default.username = root
database.default.password = root
jika anda menggunakan Windows biasanya bagian password dapat dikosongkan, atau jika anda menggunakan password tertentu bisa disesuiakan.
3. Command Line dengan php spark
CLI CodeIgniter membantu otomatisasi banyak pekerjaan.
Perintah penting:
php spark
php spark help migrate
Dengan help, kita bisa melihat:
Usage(cara pakai)Description(fungsi perintah)Options(opsi tambahan)
4. Migration: Mengelola Struktur Tabel
Migration memudahkan perubahan skema database secara terstruktur dan konsisten antar lingkungan.
Membuat migration:
php spark make:migration create_tasks_table
Contoh method up() dan down():
public function up()
{
$this->forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 5,
'unsigned' => true,
'auto_increment' => true,
],
'name' => [
'type' => 'VARCHAR',
'constraint' => '100',
],
'description' => [
'type' => 'TEXT',
'null' => true,
],
'done' => [
'type' => 'TINYINT',
'default' => false,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('tasks');
}
public function down()
{
$this->forge->dropTable('tasks');
}
Menjalankan migration:
php spark migrate
Jika muncul error koneksi MySQL, pastikan:
- konfigurasi
.envbenar, - host cocok (
localhostatau127.0.0.1), - service MySQL aktif.
5. Seeder: Menambahkan Data Awal/Dummy
Seeder digunakan untuk mengisi data awal secara otomatis.
Membuat seeder:
php spark make:seeder TaskSeeder
Contoh isi run():
public function run()
{
$this->db->table('tasks')->insert([
'name' => 'Belajar CodeIgniter',
'description' => 'CI merupakan framework PHP dengan konsep MVC.',
'done' => false,
]);
}
Jalankan seeder:
php spark db:seed TaskSeeder
6. Konfigurasi Database
Konfigurasi database utama ada di app/Config/Database.php. Namun praktik yang direkomendasikan adalah menyimpan nilai koneksi di .env agar lebih fleksibel.
Poin penting:
$defaultGroupmenentukan grup koneksi default.- Kita bisa menambah grup lain, misalnya
production. - Saat testing, konfigurasi bisa otomatis mengarah ke grup
tests.
7. Routing
Routing mengatur pemetaan URI ke controller/method. Pengaturan utama ada di app/Config/Routes.php.
Contoh route manual:
$routes->get('task', 'TaskController::index');
Pada CI4 modern, auto routing tidak direkomendasikan untuk alasan keamanan. Karena itu, pemetaan route manual lebih dianjurkan.
8. Library dan Helper
CodeIgniter menyediakan utilitas siap pakai:
Library: fitur lebih kompleks (misalnya session).Helper: fungsi-fungsi ringan (misalnya URL, text, form).
Contoh helper URL di CI4:
helper('url');
echo base_url('assets/css/style.css');
Membuat helper kustom:
php spark make:helper MyHelper
Contoh fungsi helper:
if (! function_exists('say_hello')) {
function say_hello(string $name): string
{
return "Hello, {$name}! Welcome to CodeIgniter!";
}
}
9. Pola MVC di CodeIgniter 4
MVC memisahkan aplikasi menjadi tiga komponen:
Model: mengelola data dan logika terkait database.View: menampilkan antarmuka.Controller: menerima request, memproses alur, menghubungkan model dan view.
A. Model
Buat model:
php spark make:model TaskModel
Contoh lengkap app/Models/TaskModel.php:
<?php
namespace App\Models;
use CodeIgniter\Model;
class TaskModel extends Model
{
protected $table = 'tasks';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = ['name', 'description', 'done'];
}
Pada tahap ini, model cukup digunakan untuk membaca data hasil migration dan seeder dengan method seperti findAll().
B. Controller
Buat controller:
php spark make:controller TaskController
Contoh lengkap app/Controllers/TaskController.php:
<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\TaskModel;
class TaskController extends BaseController
{
public function index()
{
$taskModel = new TaskModel();
$tasks = $taskModel->orderBy('id', 'DESC')->findAll();
return view('v_task', [
'title' => 'Task List',
'tasks' => $tasks,
]);
}
}
Tambahkan route agar method di atas bisa diakses:
$routes->get('task', 'TaskController::index');
C. View
Struktur view yang dipakai:
app/Views/
v_task.php
Contoh lengkap app/Views/v_task.php:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= esc($title) ?></title>
</head>
<body>
<h1><?= esc($title) ?></h1>
<p>Data berikut berasal dari tabel <code>tasks</code> yang telah dibuat lewat migration dan diisi lewat seeder.</p>
<?php if (empty($tasks)): ?>
<p>Belum ada task.</p>
<?php else: ?>
<ul>
<?php foreach ($tasks as $task): ?>
<li>
<strong><?= esc($task['name']) ?></strong>
<?php if (! empty($task['description'])): ?>
- <?= esc($task['description']) ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</body>
</html>
Pada tahap ini kita fokus satu view sederhana dulu. Konsep layout akan dibahas pada materi berikutnya.
10. Ringkasan
Bab ini menegaskan fondasi penting pengembangan web dengan CodeIgniter 4:
- Konfigurasi aplikasi dan environment.
- Pemakaian CLI untuk produktivitas.
- Pengelolaan database via migration dan seeder.
- Pengaturan route secara aman dan terstruktur.
- Penerapan pola MVC untuk aplikasi modular.
Dengan menguasai bagian ini, proses pengembangan menjadi lebih sistematis, mudah diuji, dan lebih siap untuk skala aplikasi yang lebih besar.


