Tạo và chạy dự án Yii 2
Yii 2 là gì?
Yii 2 là một framework PHP hiệu suất cao, phù hợp cho việc phát triển các ứng dụng web hiện đại. Nó tuân theo mô hình thiết kế MVC (Model-View-Controller), cung cấp một bộ công cụ và tính năng phong phú, giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng web chất lượng cao. Yii 2 nổi bật với tính hiệu suất cao, linh hoạt và dễ mở rộng, là sự lựa chọn hàng đầu của nhiều nhà phát triển.
Các tính năng và lợi ích chính của Yii 2
- Hiệu suất cao: Yii 2 là một framework hiệu suất cao, có thể xử lý các yêu cầu đồng thời lớn.
- Modular: Cung cấp nhiều module và plugin, dễ dàng mở rộng và tùy chỉnh chức năng.
- Bảo mật: Tích hợp nhiều tính năng bảo mật như xác thực đầu vào, lọc đầu ra, bảo vệ CSRF, v.v.
- Dễ sử dụng: Cung cấp API đơn giản và dễ sử dụng cùng tài liệu phong phú, giúp nhà phát triển nhanh chóng làm quen.
- Hỗ trợ cộng đồng mạnh mẽ: Có cộng đồng phát triển viên hoạt động và nhiều tiện ích mở rộng của bên thứ ba.
Yii 2 giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng web hiệu suất cao và chất lượng cao, phù hợp với mọi quy mô dự án.
Tạo và chạy dự án Yii 2 với ServBay
Trong bài viết này, chúng ta sẽ sử dụng môi trường PHP do ServBay cung cấp để tạo và chạy một dự án Yii 2. Chúng ta sẽ sử dụng tính năng 'Host' của ServBay để cấu hình máy chủ web và thực hiện việc truy cập dự án một cách đơn giản.
Lưu ý: Nếu bạn từng là người dùng NGINX hoặc Apache
ServBay mặc định sử dụng Caddy làm máy chủ web. Đối với người dùng di chuyển từ NGINX và Apache sang ServBay, có một số điểm thay đổi quan trọng cần lưu ý:
Cấu hình Caddy
ServBay đã tích hợp sẵn Caddy và cấu hình mặc định đã được tối ưu hóa và kiểm tra. Nhà phát triển chỉ cần sử dụng tính năng 'Host' của ServBay để quản lý trang web mà không cần chỉnh sửa tệp cấu hình Caddy thủ công.
Quy tắc Rewrite và .htaccess
Trong NGINX và Apache, nhà phát triển thường phải tự viết quy tắc Rewrite và tệp .htaccess để xử lý URL rewrite và các cấu hình khác. Tuy nhiên, ServBay đã cấu hình sẵn các quy tắc của Caddy, vì vậy, trừ khi có yêu cầu đặc biệt, nhà phát triển không cần tự viết các quy tắc này.
Tìm hiểu thêm
Thông tin liên quan, vui lòng tham khảo Rewrite và htaccess, Cách di chuyển trang web Apache sang ServBay, Cách di chuyển trang web NGINX sang ServBay.
Tạo dự án Yii 2
TIP
ServBay khuyến nghị nhà phát triển đặt trang web trong thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài đặt Composer
ServBay đã tích hợp sẵn Composer, không cần cài đặt riêng.
Tạo dự án Yii 2
Sử dụng Composer để tạo một dự án mẫu Yii 2 cơ bản:
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app composer create-project --prefer-dist yiisoft/yii2-app-basic .
1
2
3
4Chuyển vào thư mục dự án
Chuyển vào thư mục dự án Yii 2 mới tạo:
bashcd /Applications/ServBay/www/servbay-yii2-app
1
Cấu hình ban đầu
Cấu hình kết nối cơ sở dữ liệu
Trong tệp
config/db.php
, cấu hình thông tin kết nối cơ sở dữ liệu: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
7Cấu hình bộ nhớ đệm và Redis
Trong tệp
config/web.php
, thêm cấu hình cho bộ nhớ đệm và 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
Cấu hình máy chủ web
Sử dụng tính năng 'Host' của ServBay để truy cập dự án Yii 2. Trong phần cài đặt 'Host' của ServBay, thêm một host mới:
- Tên:
My First Yii 2 Dev Site
- Tên miền:
servbay-yii2-test.local
- Loại trang web:
PHP
- Phiên bản PHP: chọn
8.3
- Thư mục gốc trang web:
/Applications/ServBay/www/servbay-yii2-app/web
Chi tiết các bước cấu hình, vui lòng tham khảo Thêm trang web đầu tiên.
Thêm mã ví dụ
Trong tệp controllers/SiteController.php
, thêm mã sau:
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
Trong tệp views/site/index.php
, thêm mã sau:
<?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
Truy cập trang web
Mở trình duyệt và truy cập các URL sau:
https://servbay-yii2-test.local
:Bạn sẽ thấy trang chào mừng mặc định của Yii 2.
Ví dụ về cơ sở dữ liệu NoSQL
Ví dụ về Memcached
Cài đặt phần mở rộng Memcached
Trong ServBay, phần mở rộng Memcached đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Memcached
Trong tệp
config/web.php
, cấu hình thông tin kết nối 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
13Sử dụng Memcached
Trong controller, sử dụng cache:
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
Ví dụ về Redis
Cài đặt phần mở rộng Redis
Trong ServBay, phần mở rộng Redis đã được cài đặt sẵn, không cần cài đặt thêm.
Cấu hình Redis
Trong tệp
config/web.php
, cấu hình thông tin kết nối 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
9Sử dụng Redis
Trong controller, sử dụng cache:
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
Ví dụ về cơ sở dữ liệu quan hệ
Tạo cấu trúc cơ sở dữ liệu và tệp migration
Tạo tệp migration
Sử dụng công cụ Gii của Yii 2 để tạo tệp migration:
bashphp yii migrate/create create_users_table
1Chỉnh sửa tệp migration
Trong thư mục
migrations
, tìm tệp migration mới tạo và chỉnh sửa nó để định nghĩa cấu trúc bảng cơ sở dữ liệu: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
10Chạy migration
Sử dụng lệnh migrate của Yii 2 để chạy migration và tạo bảng cơ sở dữ liệu:
bashphp yii migrate
1
Ví dụ về MySQL
Cấu hình MySQL
Trong tệp
config/db.php
, cấu hình thông tin kết nối 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
7Ghi dữ liệu người dùng
Trong controller, ghi dữ liệu người dùng:
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
8Sử dụng MySQL
Trong controller, gọi cơ sở dữ liệu:
phppublic function actionMysql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
Ví dụ về PostgreSQL
Cấu hình PostgreSQL
Trong tệp
config/db.php
, cấu hình thông tin kết nối 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
7Ghi dữ liệu người dùng
Trong controller, ghi dữ liệu người dùng:
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
8Sử dụng PostgreSQL
Trong controller, gọi cơ sở dữ liệu:
phppublic function actionPgsql() { $users = Yii::$app->db->createCommand('SELECT * FROM users')->queryAll(); return $this->asJson($users); }
1
2
3
4
5
Bằng cách làm theo các bước trên, bạn đã thành công tạo và chạy một dự án Yii 2, sử dụng các tính năng do ServBay cung cấp để quản lý và truy cập dự án của bạn, đồng thời kết nối và gọi dữ liệu từ nhiều cơ sở dữ liệu khác nhau. Hy vọng bài viết này sẽ giúp bạn nhanh chóng làm quen với Yii 2 và áp dụng vào dự án của mình.