Membina dan Menjalankan Projek Yii 2 dalam ServBay
Pengenalan: Apakah Itu Yii 2?
Yii 2 ialah rangka kerja PHP berprestasi tinggi yang berasaskan komponen, direka untuk pembangunan aplikasi Web moden yang pantas. Ia mengikut corak reka bentuk MVC (Model-View-Controller) dan menawarkan set ciri serta alat menyeluruh yang membantu pembangun membina aplikasi Web yang boleh diskalakan dan berkualiti tinggi dengan cekap. Yii 2 terkenal dengan prestasi cemerlang, seni bina yang fleksibel, serta fungsi terbina dalam yang kuat seperti caching, keselamatan, dan sokongan pembangunan API RESTful.
Ciri-ciri utama dan kelebihan Yii 2
- Prestasi Tinggi: Yii 2 dioptimumkan untuk mengurus permintaan serentak yang tinggi, sesuai untuk aplikasi yang memerlukan prestasi sensitif.
- Modularitas: Reka bentuk rangka kerja ini sangat modular, memudahkan pengurusan kod dan penggunaan semula komponen.
- Keselamatan: Dilengkapi ciri keselamatan seperti pengesahan input, penapisan output, perlindungan CSRF/XSS, rangka kerja pengesahan dan kebenaran, dan banyak lagi.
- Mudah Digunakan: API yang ringkas dan dokumentasi komprehensif memudahkan pembelajaran dan penggunaan segera untuk pembangun.
- Sokongan Komuniti Yang Kuat: Komuniti pembangun yang aktif dan perpustakaan sambungan pihak ketiga yang meluas untuk bantuan pantas bila berdepan isu.
- Alat Integrasi: Alat baris perintah disediakan untuk tugas seperti migrasi pangkalan data, penjanaan kod dan sebagainya untuk meningkatkan produktiviti.
Yii 2 sangat sesuai untuk membangunkan aplikasi di peringkat perusahaan, API RESTful, portal dan pelbagai lagi jenis projek Web.
Menjalankan Projek Yii 2 dengan ServBay
ServBay direka khas untuk macOS sebagai persekitaran pembangunan Web tempatan. Ia mengintegrasikan PHP, pelbagai pangkalan data (MySQL, PostgreSQL, MongoDB, Redis), pelayan Web (Caddy, Nginx), serta pelbagai alat pembangun lain (Composer, Node.js, Python, Go, Java dan lain-lain), memberikan pembangun platform pembangunan “sedia digunakan” yang mudah.
Panduan ini menerangkan langkah demi langkah cara menggunakan perkhidmatan PHP, Composer, dan pangkalan data yang disediakan oleh ServBay untuk mencipta serta menjalankan projek aplikasi asas Yii 2. Kita akan menggunakan ciri “Laman Web” ServBay untuk mengkonfigurasi pelayan Web tempatan, serta membuat demonstrasi akses dan fungsi asas projek.
Keperluan Asas
Sebelum bermula, pastikan anda telah:
- Memasang dan menjalankan ServBay dengan betul di macOS.
- Memasang dan mengaktifkan versi PHP yang diperlukan dalam ServBay (misalnya PHP 8.3 atau terbaru).
- Memasang dan mengaktifkan perkhidmatan pangkalan data pilihan anda (seperti MySQL atau PostgreSQL) serta cache (Memcached & Redis) dalam ServBay.
Anda boleh menyemak dan mengurus pakej serta status perkhidmatan melalui antara muka utama ServBay.
Membina Projek Yii 2
TIP
ServBay mengesyorkan anda meletakkan fail projek di direktori /Applications/ServBay/www
. Ini memastikan struktur fail yang kemas dan memudahkan pengurusan laman Web melalui fungsi “Laman Web” ServBay.
Composer: Composer telah pun terbina dalam di ServBay. Anda tidak perlu memasangnya secara berasingan. Gunakan terus arahan
composer
dalam terminal.Bina Direktori Projek: Buka terminal, pergi ke direktori root laman web ServBay, kemudian bina satu direktori projek baharu:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app
1
2
3Cipta Projek Yii 2 dengan Composer: Dalam direktori
servbay-yii2-app
, jalankan Composer untuk membina projek templat asas Yii 2:bashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .
1Perintah ini akan memuat turun templat aplikasi asas Yii 2 serta segala keperluannya ke direktori semasa (
.
). Sila tunggu hingga proses selesai.Masuk ke Direktori Projek: Pastikan terminal anda berada di root projek
/Applications/ServBay/www/servbay-yii2-app
untuk menjalankan semua arahan seterusnya.bashcd /Applications/ServBay/www/servbay-yii2-app
1
Konfigurasi Asas
Selepas projek Yii 2 dibina, anda perlu membuat beberapa tetapan asas, terutamanya untuk sambungan pangkalan data dan komponen aplikasi.
Tetapkan Sambungan Pangkalan Data: Sunting fail
config/db.php
di root projek anda. Kemaskini tetapan sambungan pangkalan data mengikut perkhidmatan yang anda gunakan di ServBay (MySQL atau PostgreSQL) dan konfigurasinya (biasanya pengguna default ialahroot
dan kata laluan ialahpassword
, kecuali anda ubah).Pertama, bina pangkalan data baharu dalam perkhidmatan pangkalan data ServBay untuk projek ini. Contoh:
servbay_yii2_app
. Gunakan Adminer yang disediakan oleh ServBay, atau klien kegemaran anda (Sequel Ace, TablePlus dsb.) untuk mencipta pangkalan data. Untuk akses Adminer, pergi ke bahagian pangkalan data dalam aplikasi ServBay.Untuk MySQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', // dbname mengikut nama pangkalan data anda 'username' => 'root', // Nama pengguna pangkalan data anda 'password' => 'password', // Kata laluan pangkalan data anda 'charset' => 'utf8mb4', // Disyorkan guna utf8mb4 untuk sokongan karakter lebih luas ];
1
2
3
4
5
6
7
8
9Untuk PostgreSQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;port=5432;dbname=servbay_yii2_app', // dbname ikut nama DB, port biasa 5432 'username' => 'root', // Nama pengguna DB anda 'password' => 'password', // Kata laluan DB anda 'charset' => 'utf8', 'schemaMap' => [ 'pgsql' => [ 'class' => 'yii\pgsql\Schema', 'defaultSchema' => 'public', // Skim lalai PostgreSQL ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Pilih dan ubah
config/db.php
mengikut keperluan sebenar projek anda.Konfigurasi Cache dan Redis: Sunting fail
config/web.php
di root projek dan kemaskini bahagiancomponents
untuk mengkonfigurasi Memcached dan Redis. Port lalai ServBay untuk Memcached ialah11211
, manakala Redis ialah6379
.php<?php // ... konfigurasi lain 'components' => [ // ... konfigurasi komponen lain (seperti request, cache, user, errorHandler, log, urlManager) 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, // Port lalai Memcached 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, // Port lalai Redis 'database' => 0, // Indeks database Redis ], // ... komponen lain ], // ... konfigurasi lain
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Pastikan Memcached dan Redis telah dimulakan dalam ServBay. Perhatian, untuk menggunakan Redis sebagai cache, anda perlu pasang pakej
yiisoft/yii2-redis
(pakej asas biasanya dipasang ketikacreate-project
, jika tidak, jalankancomposer require yiisoft/yii2-redis
). Untuk Memcached, biasanya gunakanyiisoft/yii2-memcached
. Templat asas kemungkinan telah mempunyai keperluan ini.
Konfigurasi Pelayan Web (ServBay Laman Web)
Gunakan fungsi “Laman Web” dalam ServBay untuk menetapkan pelayan Web (Caddy atau Nginx) supaya mengarah ke projek Yii 2 anda.
- Buka Aplikasi ServBay: Lancarkan aplikasi ServBay.
- Navigasi ke Tetapan Laman Web: Dalam antara muka, cari dan klik menu "Laman Web" atau navigasi seumpamanya.
- Tambah Laman Web Baharu: Klik butang tambah laman baru (kebiasaannya
+
atauTambah
). - Lengkapkan Maklumat Laman:
- Nama: Masukkan nama yang mudah dikenali, contoh
My First Yii 2 Dev Site
. - Domain: Isi domain tempatan yang mahu digunakan pada pelayar, contoh
servbay-yii2-test.local
. ServBay akan mengkonfigurasi DNS tempatan secara automatik supaya domain merujuk ke127.0.0.1
. - Jenis Laman: Pilih
PHP
. - Versi PHP: Pilih versi PHP yang dikehendaki, contoh
8.3
. Pastikan versi itu telah dipasang dan diaktifkan dalam ServBay. - Root Direktori Laman: Langkah ini sangat penting. Untuk templat asas Yii 2, titik masuk awam ialah direktori
web
dalam root projek. Jadi, tetapkan root laman web kepada:/Applications/ServBay/www/servbay-yii2-app/web
.
- Nama: Masukkan nama yang mudah dikenali, contoh
- Simpan dan Terapkan: Simpan konfigurasi laman anda. ServBay akan meload semula tetapan pelayan Web secara automatik supaya perubahan berkuat kuasa.
Rujuk dokumen rasmi ServBay untuk langkah terperinci: Tambah Laman Web Pertama Anda.
ServBay akan menjana dan mempercayai sijil SSL secara automatik (melalui ServBay User CA atau ServBay Public CA), jadi anda boleh mengakses laman dengan selamat menggunakan HTTPS.
Menambah Kod Contoh untuk Demonstrasi Fungsi
Sebagai demonstrasi penggunaan pangkalan data dan cache, mari tambah operasi contoh ke dalam pengawal/default controller Yii 2.
Sunting fail controllers/SiteController.php
di root projek dan tambah kaedah berikut ke dalam kelas SiteController
:
php
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use yii\db\Exception as DbException; // Import kelas exception pangkalan data
class SiteController extends Controller
{
/**
* Papar halaman utama.
*
* @return string
*/
public function actionIndex()
{
return $this->render('index');
}
/**
* Demonstrasi penggunaan Memcached.
*
* @return Response
*/
public function actionMemcached()
{
$cache = Yii::$app->cache;
$key = 'my_memcached_test_key';
$data = 'Hello Memcached from ServBay!';
$duration = 60; // Cache selama 60 saat
if ($cache->set($key, $data, $duration)) {
$value = $cache->get($key);
return $this->asText("Memcached berjaya ditetapkan. Data diperoleh: " . $value);
} else {
return $this->asText("Gagal menetapkan data dalam Memcached. Sila semak perkhidmatan dan konfigurasi Memcached.");
}
}
/**
* Demonstrasi penggunaan Redis.
*
* @return Response
*/
public function actionRedis()
{
$redis = Yii::$app->redis;
$key = 'my_redis_test_key';
$data = 'Hello Redis from ServBay!';
try {
if ($redis->set($key, $data)) {
$value = $redis->get($key);
return $this->asText("Redis berjaya ditetapkan. Data diperoleh: " . $value);
} else {
return $this->asText("Gagal menetapkan data dalam Redis. Sila semak perkhidmatan dan konfigurasi Redis.");
}
} catch (\yii\base\Exception $e) {
return $this->asText("Ralat Redis: " . $e->getMessage() . ". Sila semak perkhidmatan dan konfigurasi Redis.");
}
}
/**
* Demonstrasi menambah pengguna ke pangkalan data.
* Mengandaikan wujud jadual 'users'.
*
* @return Response
*/
public function actionMysqlAdd() // Sesuai juga digunakan untuk PostgreSQL jika konfigurasi betul
{
try {
$count = Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay Demo User', // Nama demo berkaitan ServBay
'email' => '[email protected]', // Email demo berkaitan ServBay
])->execute();
return $this->asText("Pengguna berjaya ditambah. Jumlah baris terjejas: " . $count);
} catch (DbException $e) {
return $this->asText("Gagal tambah pengguna ke pangkalan data. Ralat: " . $e->getMessage() . ". Sila semak perkhidmatan, konfigurasi, dan pastikan jadual 'users' wujud.");
}
}
/**
* Demonstrasi mendapatkan pengguna dari pangkalan data.
* Mengandaikan jadual 'users' wujud.
*
* @return Response
*/
public function actionMysql() // Juga boleh digunakan untuk PostgreSQL
{
try {
$users = Yii::$app->db->createCommand('SELECT id, name, email FROM users')->queryAll();
// Format output untuk mengelakkan paparan medan sensitif/format tidak teratur
$output = "Senarai Pengguna Diperoleh:\n";
foreach ($users as $user) {
$output .= "- ID: {$user['id']}, Nama: {$user['name']}, Emel: {$user['email']}\n";
}
return $this->asText($output);
} catch (DbException $e) {
return $this->asText("Gagal mendapatkan pengguna dari pangkalan data. Ralat: " . $e->getMessage() . ". Sila semak perkhidmatan, konfigurasi, dan pastikan jadual 'users' wujud.");
}
}
// Jika anda menggunakan PostgreSQL, boleh tambah action khusus, biasanya guna komponen db yang sama
// public function actionPgsqlAdd() { ... }
// public function actionPgsql() { ... }
/**
* Format output sebagai teks biasa.
* @param string $text
* @return Response
*/
protected function asText($text)
{
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->getHeaders()->add('Content-Type', 'text/plain');
return $text;
}
/**
* Format output sebagai JSON.
* @param mixed $data
* @return Response
*/
protected function asJson($data)
{
Yii::$app->response->format = Response::FORMAT_JSON;
return $data;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Perlu diingat, dalam actionMysqlAdd
dan actionMysql
telah ditambah pengendalian ralat serta penambahbaikan output. Nama pengguna dan emel juga disesuaikan agar mematuhi penjenamaan ServBay.
Sunting fail views/site/index.php
, iaitu fail view untuk actionIndex
. Anda boleh kekalkan atau ubah suai kandungan asal berikut:
php
<?php
/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */
use yii\helpers\Html;
$this->title = 'Aplikasi Yii2 Saya di ServBay'; // Kemas kini tajuk
?>
<div class="site-index">
<div class="jumbotron">
<h1>Tahniah!</h1>
<p class="lead">Anda berjaya mencipta aplikasi Yii2 dan mengkonfigurasinya dengan ServBay!</p>
<p><a class="btn btn-lg btn-success" href="https://www.yiiframework.com">Mula dengan Yii</a></p>
</div>
<div class="body-content">
<h2>Demonstrasi</h2>
<ul>
<li><a href="<?= Html::toRoute('site/memcached') ?>">Uji Memcached</a></li>
<li><a href="<?= Html::toRoute('site/redis') ?>">Uji Redis</a></li>
<li><a href="<?= Html::toRoute('site/mysql-add') ?>">Tambah pengguna ke DB</a> (Jadual 'users' diperlukan)</li>
<li><a href="<?= Html::toRoute('site/mysql') ?>">Dapatkan pengguna dari DB</a> (Jadual 'users' diperlukan)</li>
</ul>
<p>Sila pastikan servis Memcached, Redis, dan pangkalan data pilihan anda (MySQL/PostgreSQL) sedang berjalan dalam ServBay serta dikonfigurasi dengan betul dalam `config/web.php` dan `config/db.php`.</p>
<p>Bagi demo pangkalan data, anda perlu mencipta jadual 'users' menggunakan migrasi Yii (rujuk seksyen di bawah).</p>
</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Saya telah tambah pautan untuk memudahkan anda menguji aksi controller yang sudah ditambah sebelum ini.
Pangkalan Data Relasi: Membina Struktur Jadual (Migrasi)
Untuk demo berkaitan pangkalan data (actionMysqlAdd
, actionMysql
), anda perlukan jadual users
dalam pangkalan data. Adalah disyorkan supaya menggunakan migrasi bagi mengurus perubahan schema dalam Yii.
Jalankan Gii/Migrasi untuk Cipta Fail Migrasi: Dalam terminal, di root projek
/Applications/ServBay/www/servbay-yii2-app
, jalankan perintah Yii untuk hasilkan fail migrasi baharu:bashphp yii migrate/create create_users_table
1Sistem akan meminta pengesahan, taip
yes
dan tekan Enter. Fail PHP baharu dengan nama sepertimYYYYMMDD_HHMMSS_create_users_table.php
akan dicipta dalam foldermigrations
.Sunting Fail Migrasi: Buka fail migrasi yang baru dibuat dan tambah kod di bawah dalam fungsi
up()
:php<?php use yii\db\Migration; /** * Mengendalikan penciptaan jadual `{{%users}}`. */ class mXXXXXXXXXXXXXX_create_users_table extends Migration // Ganti XXXXXXXXXXXXXX dengan timestamp sebenar { /** * {@inheritdoc} */ public function up() { $this->createTable('{{%users}}', [ // {{%users}} menyokong prefix (jika ditetapkan) 'id' => $this->primaryKey(), 'name' => $this->string()->notNull(), 'email' => $this->string()->notNull()->unique(), 'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), 'updated_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ]); // Pilihan: Buat indeks untuk kecekapan carian $this->createIndex( 'idx-users-email', '{{%users}}', 'email', true // true bermaksud index unik ); } /** * {@inheritdoc} */ public function down() { // Padamkan indeks $this->dropIndex( 'idx-users-email', '{{%users}}' ); // Padamkan jadual $this->dropTable('{{%users}}'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46Pastikan tukar
mXXXXXXXXXXXXXX_create_users_table
dengan nama fail sebenar yang dihasilkan.Laksanakan Migrasi: Dalam terminal (masih di root projek), jalankan arahan berikut untuk cipta jadual berdasarkan fungsi
up()
migrasi:bashphp yii migrate
1Taip
yes
untuk sahkan. Jika berjaya, mesej kejayaan akan dipaparkan.
Akses Laman Web dan Uji Fungsi
Sekarang, anda boleh membuka pelayar dan akses domain yang anda tetapkan dalam ServBay, contohnya https://servbay-yii2-test.local
.
- Lawati
https://servbay-yii2-test.local
– anda akan melihat halaman welcome templat Yii 2 bersama pautan demo yang telah ditambah dalamviews/site/index.php
. - Klik pautan "Uji Memcached" atau pergi ke
https://servbay-yii2-test.local/index.php?r=site/memcached
– jika Memcached berjalan dan konfigurasi betul, teks "Memcached berjaya ditetapkan..." akan dipaparkan. - Klik "Uji Redis" atau lawati
https://servbay-yii2-test.local/index.php?r=site/redis
– jika Redis berjaya, teks "Redis berjaya ditetapkan..." akan dipaparkan. - Klik "Tambah pengguna ke DB" atau lawati
https://servbay-yii2-test.local/index.php?r=site/mysql-add
– jika pangkalan data berfungsi dan jadualusers
telah diwujudkan, anda akan lihat "Pengguna berjaya ditambah..." Setiap akses akan cuba tambah pengguna baharu (selagi medan emel tiada constraint unik yang dilanggar). - Klik "Dapatkan pengguna dari DB" atau pergi ke
https://servbay-yii2-test.local/index.php?r=site/mysql
– jika pangkalan data dan jadualusers
sedia ada, senarai pengguna akan dipaparkan dari jadual.
Sekiranya anda menghadapi isu, sila semak sama ada perkhidmatan berkaitan (PHP, pelayan Web, pangkalan data, Memcached, Redis) sedang berjalan dalam ServBay dan tetapan projek Yii 2 (config/db.php
, config/web.php
) betul, serta semak status jadual pangkalan data.
Soalan Lazim (FAQ)
- Mengapa saya mendapat ralat “Tidak dapat diakses” atau ralat sijil apabila melawat domain? Pastikan anda telah menambah domain dengan betul dalam tetapan “Laman Web” ServBay dan aplikasi ServBay sedang dijalankan. ServBay akan mengkonfigurasikan DNS tempatan dan sijil SSL secara automatik. Jika ralat sijil berlaku, pastikan anda telah mempercayai ServBay User CA atau ServBay Public CA — rujuk dokumen rasmi ServBay untuk langkah terperinci.
- Arahan Composer tidak dapat dijalankan? Pastikan pakej Composer telah diaktifkan dalam antara muka ServBay dan anda menjalankan perintah melalui terminal macOS. ServBay secara automatik menambah Composer ke dalam PATH anda.
- Gagal sambung ke pangkalan data? Sila pastikan perkhidmatan pangkalan data (MySQL/PostgreSQL) sedang berjalan dalam ServBay. Semak konfigurasi
dsn
,username
, danpassword
dalamconfig/db.php
agar sepadan dengan tetapan pangkalan data ServBay. Pastikan juga pangkalan dataservbay_yii2_app
telah dicipta, boleh semak dengan Adminer ServBay. - Gagal sambung Memcached/Redis? Sila periksa status Memcached/Redis dalam ServBay, dan pastikan atur cara
host
danport
dalamconfig/web.php
adalah betul (lalai:127.0.0.1
& port servis berkenaan). - Kenapa migrasi pangkalan data (
php yii migrate
) gagal? Pastikan failconfig/db.php
telah dikonfigurasi dengan betul, perkhidmatan pangkalan data berjalan dan pangkalan data telah dicipta. Arahan migrasi memerlukan sambungan ke pangkalan data yang aktif. - Mengapa
actionMysqlAdd
/actionMysql
memberi ralat tiada jadual? Anda mesti melaksanakan migrasi denganphp yii migrate
untuk cipta jadualusers
terlebih dahulu. - Bagaimana nak lihat log ralat PHP? Log ralat PHP, pelayan web, dan lain-lain dikumpul dalam bahagian “Log” di antara muka ServBay. Sila rujuk sana untuk diagnosis masalah selanjutnya.
Rumusan
Dengan ServBay, anda dapat membina persekitaran pembangunan tempatan di macOS yang lengkap untuk menjalankan projek Yii 2 dengan mudah. Composer yang siap pasang, pengurusan versi PHP, perkhidmatan pangkalan data dan cache terbina dalam, serta tetapan laman web mesra pengguna sangat memudahkan langkah permulaan dan pembangunan projek Yii 2 anda. Dengan mengikuti panduan ini, anda akan mula membangunkan projek Yii 2 dengan pantas dan meningkatkan produktiviti menggunakan pelbagai alat yang ServBay sediakan.
Selamat maju jaya dalam pembangunan anda!