创建并运行 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,并应用于您的项目中。