Penjelasan Struktur Folder CodeIgniter 4, Fungsi dan Konfigurasi env

Melanjutkan tutorial cara membuat website dengan CodeIgniter 4. Kali ini saya akan membahas mengenai pengenalan struktur folder CodeIgniter 4 beserta dengan fungsi-fungsinya.

Sebelum membaca tulisan/tutorial ini, ada baiknya kamu membaca tutorial sebelumnya tentang cara install CodeIgniter 4 dengan Composer.

Struktur Folder CodeIgniter 4

Setelah berhasil menginstall CodeIgniter 4, kamu akan menemukan folder-folder seperti pada gambar berikut ini:

Folder di atas adalah folder default sebagai kerangka dari aplikasi yang akan kita bangun. Ketika menulis kode program dengan CodeIgniter, kita akan banyak membuat file di folder Controllers, Models, dan Views.

Berikut ini adalah penjelasan struktur folder codeigniter 4 dari masing-masing folder di atas.

1. Penjelasan Folder app

Struktur dan Penjelasan di dalam folder app adalah sebagai berikut:

  • Folder Config : Folder ini berfungsi untuk menyimpan konfigurasi terkait aplikasi yang dibuat dengan CodeIgniter 4.
  • Folder Controllers : Folder ini berisi script “Controller”, menentukan flow dari aplikasi yang kita buat.
  • Folder Database : Folder ini berfungsi untuk menyimpan file-file migration and seed.
  • Folder Filters : Folder ini berfungsi untuk menyimpan script yang berjalan sebelum atau sesudah controller dijalankan.
  • Folder Helpers : Folder ini berfungsi untuk menyimpan script helper yang merupakan fungsi yang berdiri sendiri / standalone.
    Folder Language : Folder ini berfungsi untuk menyimpan macam-macam bahasa yang digunakan di aplikasi kita.
  • Folder Libraries : Folder ini bergungsi untuk menyimpan script yang berupa library. Biasanya berisi class-class sebagai pendukung fitur di aplikasi kita.
  • Folder Models : Folder ini berfungsi untuk mengimpan script “model”. Model adalah class yang merepresentasikan entiti dari sebuah bisnis.
  • Folder ThirdParty : Folder ini berisi library dari aplikasi pihak ketika yang digunakan di aplikasi kita.
  • Folder Views : Folder ini berfungsi untuk menyimpan tampilan/view dari aplikasi yang kita buat. View adalah tampilan HTML dan script PHP yang dilihat oleh pengguna aplikasi kita.

2. Penjelasan Folder public di CodeIgniter 4

Folder public adalah folder yang dapat diakses dari luar. Apa sih maksudnya?

Simpel nya begini, di konfigurasi web server kita, folder public adalah web root dari aplikasi kita. Di dalam folder public ini terdapat file index.php yang menjadi entry script dari aplikasi yang kita buat.

Jika kita benar dalam melakukan konfigurasi, maka ketika mengakses http://localhost:8080 sebenarnya dia sedang mengakses file index.php

Salah satu ciri konfigurasi yang salah/kurang tepat adalah ketika kita masih mengakses halaman http://localhost:8080/public untuk mengakses aplikasi.

Selain itu, di dalam folder public juga berisi file-file CSS, gambar, dan Javascript.

Tidak hanya itu, file .htaccess yang biasanya digunakan untuk mengatur pretty URL juga ditaruh di folder ini.

3. Penjelasan Folder vendor di CodeIgniter 4

Folder vendor adalah folder dimana package-package yang kita install melalui Composer disimpan. Seharusnya kita tidak mengutak-atik folder ini secara langsung.

Kita mendefinisikan package yang akan diinstall melalui file composer.json yang ada di project root.

Seperti inilah, isi file composer.json

{
	"name": "codeigniter4/appstarter",
	"type": "project",
	"description": "CodeIgniter4 starter app",
	"homepage": "https://codeigniter.com",
	"license": "MIT",
	"require": {
		"php": ">=7.2",
		"codeigniter4/framework": "^4"
	},
	"require-dev": {
		"mikey179/vfsstream": "1.6.*",
		"phpunit/phpunit": "8.5.*"
	},
	"autoload-dev": {
		"psr-4": {
			"Tests\\Support\\": "tests/_support"
		}
	},
	"scripts": {
		"test": "phpunit",
		"post-update-cmd": [
			"@composer dump-autoload"
		]
	},
	"support": {
		"forum": "http://forum.codeigniter.com/",
		"source": "https://github.com/codeigniter4/CodeIgniter4",
		"slack": "https://codeigniterchat.slack.com"
	}
}

Setelah mengubah file composer.json, kita diharuskan untuk menjalankan perintah update melalui CMD/Terminal.

composer update

4. Penjelasan Folder writable di CodeIgniter 4

Folder writable berfungsi untuk menyimpan file-file yang berhubungan dengan aplikasi. Di folder ini tersimpan cache, logs, debugbar, sessions, dan bahkan kamu bisa menyimpan file upload ke folder writable ini.

Dengan mengumpulkan file-file writable ke dalam satu folder, maka akan lebih memudahkan kita untuk melakukan pengamanan aplikasi. Khusus folder writable ini, membutuhkan permission write dari sisi server.

5. Penjelasan Folder test di CodeIgniter 4

Folder test ini berfungsi untuk menyimpan script untuk keperluan pengujian. Folder ini tidak perlu diupload ke server production ya.

Penjelasan Konfigurasi CodeIgniter 4

Di CodeIgniter versi 3, kita mengenal bahwa file konfigurasi aplikasi berada di dalam folder application/config/. Beberapa file konfigurasi yang banyak digunakan seperti:

  • application/config/config.php
  • application/config/database.php
  • application/config/autoload.php

Pada CodeIgniter versi 4, konfigurasi tidak jauh berbeda, yaitu berada pada folder app/Config. Namun, kita akan lebih dimanja dengan adanya file konfigurasi .env yang berada di project root aplikasi kita.

1. File Konfigurasi .env di CodeIgniter 4

Saat pertama kali CodeIgniter 4 diinstall, file ini bernama env. Kita harus mengcopy atau merename file env ini menjadi .env

Supaya lebih mudah, buka saja file env tersebut, kemudian di save as menjadi .env

Berikut ini adalah isi file .env:

#--------------------------------------------------------------------
# Example Environment Configuration file
#
# This file can be used as a starting point for your own
# custom .env files, and contains most of the possible settings
# available in a default install.
#
# By default, all of the settings are commented out. If you want
# to override the setting, you must un-comment it by removing the '#'
# at the beginning of the line.
#--------------------------------------------------------------------

#--------------------------------------------------------------------
# ENVIRONMENT
#--------------------------------------------------------------------

# CI_ENVIRONMENT = production

#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------

# app.baseURL = ''
# app.forceGlobalSecureRequests = false

# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
# app.sessionCookieName = 'ci_session'
# app.sessionSavePath = NULL
# app.sessionMatchIP = false
# app.sessionTimeToUpdate = 300
# app.sessionRegenerateDestroy = false

# app.cookiePrefix = ''
# app.cookieDomain = ''
# app.cookiePath = '/'
# app.cookieSecure = false
# app.cookieHTTPOnly = false

# app.CSRFProtection  = false
# app.CSRFTokenName   = 'csrf_test_name'
# app.CSRFCookieName  = 'csrf_cookie_name'
# app.CSRFExpire      = 7200
# app.CSRFRegenerate  = true
# app.CSRFExcludeURIs = []

# app.CSPEnabled = false

#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------

# database.default.hostname = localhost
# database.default.database = ci4
# database.default.username = root
# database.default.password = root
# database.default.DBDriver = MySQLi

# database.tests.hostname = localhost
# database.tests.database = ci4
# database.tests.username = root
# database.tests.password = root
# database.tests.DBDriver = MySQLi

#--------------------------------------------------------------------
# CONTENT SECURITY POLICY
#--------------------------------------------------------------------

# contentsecuritypolicy.reportOnly = false
# contentsecuritypolicy.defaultSrc = 'none'
# contentsecuritypolicy.scriptSrc = 'self'
# contentsecuritypolicy.styleSrc = 'self'
# contentsecuritypolicy.imageSrc = 'self'
# contentsecuritypolicy.base_uri = null
# contentsecuritypolicy.childSrc = null
# contentsecuritypolicy.connectSrc = 'self'
# contentsecuritypolicy.fontSrc = null
# contentsecuritypolicy.formAction = null
# contentsecuritypolicy.frameAncestors = null
# contentsecuritypolicy.mediaSrc = null
# contentsecuritypolicy.objectSrc = null
# contentsecuritypolicy.pluginTypes = null
# contentsecuritypolicy.reportURI = null
# contentsecuritypolicy.sandbox = false
# contentsecuritypolicy.upgradeInsecureRequests = false

#--------------------------------------------------------------------
# HONEYPOT
#--------------------------------------------------------------------

#  honeypot.hidden = 'true'
#  honeypot.label = 'Fill This Field'
#  honeypot.name = 'honeypot'
#  honeypot.template = ''


Setelah itu, kita bisa melakukan konfigurasi dengan cara menghilangkan tanda comment ( # ) di dalam file .env tersebut.

Misalnya, pada bagian database menjadi seperti ini:

--------------------------------------------------------------------
DATABASE
--------------------------------------------------------------------
database.default.hostname = localhost
database.default.database = playground
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi

Setelah itu kita bisa melanjutkan pembuatan aplikasi seperti biasa.

2. Concern Keamanan untuk File .env

File .env ini berisi konfigurasi yang biasanya berisikan username dan password. Oleh karena itu, kita harus lebih berhati-hati ketika mendeploy, atau mengirimkan aplikasi kepada orang lain.

Contoh kasus yang sering terjadi adalah, kita lupa melakukan exclude file .env saat melakukan commit di git. Hal ini bisa berakibat fatal. Apalagi jika konfigurasi di dalamnya adalah konfigurasi untuk server production.

Demikian penjelasan singkat tentang penjelasan struktur folder CodeIgniter 4.

Semoga bermanfaat

1 thought on “Penjelasan Struktur Folder CodeIgniter 4, Fungsi dan Konfigurasi env”

Leave a Comment