Belajar Yii - Instalasi & Project Template
Episode 3 of 27

Belajar Yii - Instalasi & Project Template

Menginstall Yii lewat Composer — baik template basic Yii2 (yii2-app-basic) maupun app Yii3 (yiisoft/app) — membedah struktur folder yang dihasilkan, memahami entry point dan konfigurasi aplikasi, lalu menjalankan hello world pertama dengan server bawaan PHP.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Di episode 2 kita sudah membedah arsitektur Yii secara konseptual. Sekarang saatnya tangan kita kotor: menginstall Yii dan membuat project pertama. Ini adalah gerbang menuju seluruh series — setiap episode berikutnya akan menulis kode di dalam project yang kalian buat sekarang.

Di episode ini kita melakukan dua hal. Pertama, membuat project Yii2 basic template sebagai target praktik utama kita, memeriksa struktur foldernya, dan menjalankan hello world. Kedua, melihat bagaimana project Yii3 dibuat — karena konsepnya berbeda dan akan kita dalami di episode 23.

Membuat Project Yii2 Basic Template

Composer menyediakan template resmi yiisoft/yii2-app-basic — template minimal untuk aplikasi web satu halaman-ke-halaman dengan autentikasi dasar, Gii, dan struktur MVC standar.

Buat project Yii2 basic
composer create-project --prefer-dist yiisoft/yii2-app-basic learn-yii-basic
cd learn-yii-basic
php yii migrate --interactive=0

composer create-project mengunduh template sekaligus menjalankan composer install. Lalu php yii migrate membuat tabel bawaan (user, migration history) di database SQLite yang sudah dikonfigurasi template. Jika kalian memakai MySQL/PostgreSQL, sesuaikan dulu components.db di config/db.php.

Struktur Folder Template

Template basic menghasilkan struktur yang ringkas namun menegakkan MVC:

text
learn-yii-basic/
├── commands/       # console commands (php yii ...)
├── config/         # konfigurasi: web.php, console.php, db.php, params.php
├── controllers/    # SiteController, ...
├── models/         # User, LoginForm, SignupForm, ...
├── views/          # tampilan + layouts/main.php
├── web/            # public root: index.php, assets, uploads
├── widgets/        # widget khusus aplikasi
├── runtime/        # file temporer, cache, logs
├── tests/          # template Codeception (episode 16)
├── vendor/         # dependensi Composer (termasuk framework inti)
├── composer.json
└── yii             # console entry point

Perhatikan pembedanya: web/ adalah satu-satunya folder yang harus diekspos ke web server — semua folder lain tidak boleh dapat diakses publik (episode 22 membahas hardening ini). runtime/ adalah tempat file temporer: log, cache, dan file yang dihasilkan aplikasi. vendor/ berisi seluruh dependensi, termasuk framework Yii itu sendiri.

Menjalankan Hello World

Untuk pengembangan, template basic sudah menyertakan server PHP built-in:

Jalankan server pengembangan
php yii serve --port=8080

Buka http://localhost:8080 — kalian akan melihat halaman selamat datang Yii. URL http://localhost:8080/index.php?r=site/index dipetakan ke SiteController::actionIndex(). Inilah bagian menyenangkan: setiap URL di Yii diterjemahkan oleh routing — topik yang kita bedah penuh di episode 4.

Konfigurasi Aplikasi

File config/web.php adalah tempat aplikasi dikonfigurasi — id aplikasi, komponen, params, dan module:

config/web.php - hello world dan konfigurasi
<?php
 
$params = require __DIR__ . '/params.php';
 
$config = [
    'id' => 'learn-yii-basic',
    'name' => 'Belajar Yii',
    'basePath' => dirname(__DIR__),
    'language' => 'id-ID',
    'components' => [
        'cache' => ['class' => 'yii\caching\FileCache'],
        'db' => require __DIR__ . '/db.php',
        'request' => [
            'cookieValidationKey' => 'ganti-dengan-string-random',
        ],
    ],
    'params' => $params,
];
 
return $config;

Tiga kunci penting: id (identitas aplikasi, juga dipakai sebagai session cookie prefix), name (nama aplikasi yang tampil di layout), dan cookieValidationKeywajib string random unik, karena dipakai untuk memvalidasi cookie. Jangan pernah memakai nilai default di production.

Warning

Setiap project Yii2 yang baru dibuat mewajibkan kalian mengganti cookieValidationKey. String ini melindungi cookie dari pemalsuan — jika dibiarkan nilai contoh, attacker bisa memanipulasi cookie session. Generate dengan php -r "echo bin2hex(random_bytes(32));" lalu tempel ke konfigurasi.

Membuat Project Yii3

Yii3 tidak memiliki satu template monolitik — yiisoft/app adalah template aplikasi web yang mengombinasikan package yiisoft/* sesuai kebutuhan:

Buat project Yii3 app
composer create-project --prefer-dist yiisoft/app learn-yii3-app
cd learn-yii3-app
composer install

Template Yii3 menghasilkan struktur berbasis package:

text
learn-yii3-app/
├── config/         # konfigurasi berbasis package: common, web, console
│   └── packages/   # satu file per package (router, db, view, ...)
├── src/            # kode aplikasi: ApplicationRunner, Handler, ...
├── public/         # public root: index.php
├── resources/      # view templates
├── tests/
├── runtime/        # cache, log
└── composer.json

Perbedaan paling terlihat: tidak ada controllers/, models/, views/ yang dipaksa — kode aplikasi hidup di src/ dan bisa diorganisasikan bebas sesuai package. Konfigurasi juga terpecah per package di config/packages/. Kita bedah lebih dalam di episode 23; untuk sekarang cukup pahami bahwa ini adalah paradigma berbeda dari template Yii2 yang kita pakai di sebagian besar series.

Membandingkan Kedua Template

AspekYii2 basic (yii2-app-basic)Yii3 (yiisoft/app)
PHP7.4+ (rekomendasi 8.2+)8.2+ wajib
StrukturMVC ketat: controllers/models/viewsBebas: kode di src/, per-package
KonfigurasiSatu array besarFile per package
EkosistemMonolitik yiisoft/yii2 + ekstensiSemua yiisoft/* package
DukunganKeamanan s/d Nov 2027S/d 2035

Keputusan: series ini memakai Yii2 basic template sebagai project utama, karena dokumentasi, ekstensi, dan contohnya paling lengkap — sedangkan konsep Yii3 kita kuasai di episode 23 dan 25.

Verifikasi Project

Sebelum lanjut, pastikan project kalian berfungsi penuh:

Verifikasi project Yii2
cd learn-yii-basic
php yii serve --port=8080 &
curl -I http://localhost:8080/
php yii migrate/up --interactive=0

curl -I harus mengembalikan status HTTP/1.1 200 OK, dan php yii migrate/up harus menyelesaikan migrasi tanpa error. Jika ada yang gagal, periksa error di runtime/logs/app.log — ini kebiasaan yang akan menemani kalian sepanjang series.

Penutup

Inti yang harus dibawa pulang:

  • Yii2 basic dibuat lewat composer create-project yiisoft/yii2-app-basic; jalankan dengan php yii serve.
  • Struktur MVC terpaksa: controllers/, models/, views/; hanya web/ yang diekspos publik.
  • config/web.php adalah pusat konfigurasi; cookieValidationKey wajib diganti.
  • Yii3 dibuat lewat yiisoft/app dengan struktur package-based — kita bedah di episode 23.

Di episode 4 selanjutnya, kita akan membedah routing, controllers, dan views — bagaimana URL diterjemahkan menjadi action, mengaktifkan pretty URLs, cara render dan layout bekerja, serta peran widgets di halaman. Inilah jantung alur request-response Yii yang akan dipakai hampir di setiap episode berikutnya!

Belajar Yii - Instalasi & Project Template | Belajar Yii