建立並運行 Yii 2 專案
什麼是 Yii 2?
Yii 2 是一個高效能的 PHP 框架,適合開發現代 Web 應用程式。它遵循 MVC(Model-View-Controller)設計模式,提供了一整套豐富的功能和工具,使開發者能夠快速構建高品質的 Web 應用。Yii 2 具有高效、靈活、可擴展等特點,是許多開發者的首選框架。
Yii 2 的主要特性和優勢
- 高效能:Yii 2 是一個高效能的框架,能夠處理高並發請求。
- 模組化:提供豐富的模組和插件,方便擴展和定制功能。
- 安全性:內建多種安全功能,如輸入驗證、輸出過濾、CSRF 防護等。
- 易於使用:提供簡潔易用的 API 和豐富的文件,開發者可以快速上手。
- 強大的社群支持:擁有活躍的開發者社群和豐富的第三方擴展。
Yii 2 可以幫助開發者快速構建高效能、高品質的 Web 應用,適合各種規模的專案。
使用 ServBay 建立並運行 Yii 2 專案
在這篇文章中,我們將使用 ServBay 提供的 PHP 環境來建立並運行一個 Yii 2 專案。我們將利用 ServBay 的『主機』功能來設置 Web 伺服器,並通過簡單的配置實現專案的訪問。
注意:如果你曾經是 NGINX 或 Apache 的用戶
ServBay 預設使用 Caddy 作為 Web 伺服器。對於從 NGINX 和 Apache 遷移到 ServBay 的用戶,有一些關鍵變動點需要注意:
Caddy 配置
ServBay 已經內建了 Caddy,並且預設配置已經優化和調試好。開發者只需通過 ServBay 的『主機』功能來管理站點,無需手動修改 Caddy 配置文件。
Rewrite 規則和 .htaccess
在 NGINX 和 Apache 中,開發者通常需要自己編寫 Rewrite 規則和 .htaccess 文件來處理 URL 重寫和其他配置。然而,ServBay 出廠時已經配置好了 Caddy 的規則,因此,除非有特殊需求,否則開發者無需自己編寫這些規則。
了解更多
更多相關信息,請參閱Rewrite與htaccess、Apache網站如何遷移到ServBay、NGINX網站如何遷移到ServBay。
建立 Yii 2 專案
TIP
ServBay 建議開發者把網站放置在/Applications/ServBay/www
目錄下,以方便管理。
安裝 Composer
ServBay 出廠時已經自帶 Composer,無需單獨安裝。
建立 Yii 2 專案
使用 Composer 建立一個新的 Yii 2 基礎應用模板專案:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app composer create-project --prefer-dist yiisoft/yii2-app-basic .
1
2
3
4進入專案目錄
進入新建立的 Yii 2 專案目錄:
bashcd /Applications/ServBay/www/servbay-yii2-app
1
初始化配置
配置資料庫連接
在
config/db.php
文件中配置資料庫連接信息:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7配置緩存和 Redis 組件
在
config/web.php
文件中添加緩存和 Redis 組件的配置:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
配置 Web 伺服器
使用 ServBay 的『主機』功能,通過 Web 伺服器來訪問 Yii 2 專案。在 ServBay 的『主機』設置中,添加一個新的主機:
- 名字:
My First Yii 2 Dev Site
- 域名:
servbay-yii2-test.local
- 網站類型:
PHP
- PHP 版本:選擇
8.3
- 網站根目錄:
/Applications/ServBay/www/servbay-yii2-app/web
詳細設置步驟請參考 添加第一個網站。
添加示例代碼
在 controllers/SiteController.php
文件中添加以下代碼:
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
class SiteController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
public function actionMemcached()
{
$cache = Yii::$app->cache;
$cache->set('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $this->asText($value);
}
public function actionRedis()
{
$redis = Yii::$app->redis;
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $this->asText($value);
}
public function actionMysqlAdd()
{
Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay',
'email' => '[email protected]',
])->execute();
return $this->asText('User added');
}
public function actionMysql()
{
$users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll();
return $this->asJson($users);
}
}
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
在 views/site/index.php
文件中添加以下代碼:
<?php
/* @var $this yii\web\View */
$this->title = 'My Yii2 Application';
?>
<div class="site-index">
<div class="jumbotron">
<h1>Congratulations!</h1>
<p class="lead">You have successfully created your Yii2 application.</p>
</div>
</div>
2
3
4
5
6
7
8
9
10
訪問網站
打開瀏覽器,訪問以下 URL:
https://servbay-yii2-test.local
:您會看到預設的 Yii 2 歡迎頁面。
NoSQL資料庫示例
Memcached 示例
安裝 Memcached 擴展
在 ServBay 中,Memcached 擴展已經預裝好,無需額外安裝。
配置 Memcached
在
config/web.php
文件中配置 Memcached 連接信息:php'components' => [ 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], // ... ],
1
2
3
4
5
6
7
8
9
10
11
12
13使用 Memcached
在控制器中使用緩存:
phppublic function actionMemcached() { $cache = Yii::$app->cache; $cache->set('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
Redis 示例
安裝 Redis 擴展
在 ServBay 中,Redis 擴展已經預裝好,無需額外安裝。
配置 Redis
在
config/web.php
文件中配置 Redis 連接信息:php'components' => [ 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], // ... ],
1
2
3
4
5
6
7
8
9使用 Redis
在控制器中使用緩存:
phppublic function actionRedis() { $redis = Yii::$app->redis; $redis->set('key', 'Hello Redis!'); $value = $redis->get('key'); return $this->asText($value); }
1
2
3
4
5
6
7
關係型資料庫示例
建立資料庫結構和遷移文件
建立遷移文件
使用 Yii 2 的 Gii 工具建立遷移文件:
bashphp yii migrate/create create_users_table
1編輯遷移文件
在
migrations
目錄下找到新建立的遷移文件,並編輯它以定義資料庫表結構:phppublic function up() { $this->createTable('users', [ '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'), ]); }
1
2
3
4
5
6
7
8
9
10運行遷移
使用 Yii 2 的遷移命令運行遷移,建立資料庫表:
bashphp yii migrate
1
MySQL 示例
配置 MySQL
在
config/db.php
文件中配置 MySQL 連接信息:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7寫入用戶資料
在控制器中寫入用戶資料:
phppublic function actionMysqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8使用 MySQL
在控制器中調用資料庫:
phppublic function actionMysql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
PostgreSQL 示例
配置 PostgreSQL
在
config/db.php
文件中配置 PostgreSQL 連接信息:phpreturn [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;dbname=servbay_yii2_app', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ];
1
2
3
4
5
6
7寫入用戶資料
在控制器中寫入用戶資料:
phppublic function actionPgsqlAdd() { Yii::$app->db->createCommand()->insert('users', [ 'name' => 'ServBay', 'email' => '[email protected]', ])->execute(); return $this->asText('User added'); }
1
2
3
4
5
6
7
8使用 PostgreSQL
在控制器中調用資料庫:
phppublic function actionPgsql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
通過以上步驟,您成功建立並運行了一個 Yii 2 專案,並使用 ServBay 提供的功能來管理和訪問您的專案,同時連接了多種資料庫並調用資料。希望這篇文章能幫助您快速上手 Yii 2,並應用於您的專案中。