Tạo và Chạy một Dự án CodeIgniter
CodeIgniter là gì?
CodeIgniter là một framework PHP nhẹ phù hợp để phát triển các ứng dụng web nhanh và hiệu quả. Nó tuân theo mô hình thiết kế MVC (Model-View-Controller), cung cấp một bộ tính năng và công cụ 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. Được biết đến với sự đơn giản, hiệu suất cao và dễ học, CodeIgniter là một lựa chọn phổ biến trong giới phát triển.
Các Tính năng và Ưu điểm Chính của CodeIgniter
- Nhẹ: Hệ thống cốt lõi của CodeIgniter rất nhỏ, chỉ chứa các thành phần cần thiết, giúp nó tải rất nhanh.
- Hiệu suất Cao: CodeIgniter nổi tiếng với hiệu suất hiệu quả và tốc độ, có khả năng xử lý độ đồng thời cao.
- Dễ Học: Cung cấp một API đơn giản và dễ sử dụng cùng tài liệu đầy đủ, giúp các nhà phát triển nhanh chóng bắt đầu.
- Linh Hoạt: Cho phép các nhà phát triển tự do lựa chọn và sử dụng các thư viện và plugin bên thứ ba, giúp mở rộng và tùy chỉnh dễ dàng.
- Hỗ Trợ Cộng Đồng Mạnh Mẽ: Có một cộng đồng phát triển viên hoạt động tích cực và nhiều tiện ích mở rộng của bên thứ ba.
CodeIgniter có thể 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, chất lượng cao, phù hợp cho các dự án ở mọi quy mô.
Tạo và Chạy một Dự án CodeIgniter Sử dụng ServBay
Trong bài viết này, chúng ta sẽ sử dụng môi trường PHP của ServBay để tạo và chạy một dự án CodeIgniter. Chúng ta sẽ sử dụng chức năng 'Host' của ServBay để thiết lập máy chủ web và truy cập dự án thông qua cấu hình đơn giản.
Lưu ý: Nếu bạn là người dùng NGINX hoặc Apache
ServBay sử dụng Caddy làm máy chủ web mặc định. Đối với người dùng chuyển từ NGINX và Apache sang ServBay, có một số thay đổi quan trọng cần lưu ý:
Cấu Hình Caddy
Caddy đã được tích hợp sẵn trong ServBay và cấu hình mặc định đã được tối ưu hóa và gỡ lỗi. Các nhà phát triển chỉ cần quản lý trang web thông qua chức năng 'Host' của ServBay mà không cần chỉnh sửa tập tin cấu hình Caddy bằng tay.
Quy Tắc Viết lại và .htaccess
Trong NGINX và Apache, các nhà phát triển thường phải tự viết quy tắc viết lại và tập tin .htaccess cho việc viết lại URL và các cấu hình khác. Tuy nhiên, với ServBay, các quy tắc cho Caddy đã được cấu hình sẵn, nghĩa là trừ khi có yêu cầu đặc biệt, các 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
Để biết thêm thông tin, vui lòng tham khảo Rewrite và htaccess, Cách Chuyển Đổi Trang Web Apache Sang ServBay, Cách Chuyển Đổi Trang Web NGINX Sang ServBay.
Tạo một Dự án CodeIgniter
TIP
ServBay khuyến nghị các nhà phát triển đặt các trang web của họ trong thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài Đặt Composer
Composer đã được cài đặt sẵn với ServBay, vì vậy không cần cài đặt riêng lẻ.
Tạo một Dự Án CodeIgniter
Sử dụng Composer để tạo một dự án CodeIgniter mới:
bashcd /Applications/ServBay/www mkdir servbay-codeigniter-app cd servbay-codeigniter-app composer create-project codeigniter4/appstarter .
1
2
3
4Vào Thư Mục Dự Án
Vào thư mục dự án CodeIgniter mới tạo:
bashcd /Applications/ServBay/www/servbay-codeigniter-app
1
Cấu Hình Ban Đầu
Cấu Hình Kết Nối Cơ Sở Dữ Liệu
Cấu hình các thiết lập kết nối cơ sở dữ liệu trong tập tin
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
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 chức năng 'Host' của ServBay để truy cập dự án CodeIgniter thông qua máy chủ web. Thêm một host mới trong cài đặt 'Host' của ServBay:
- Tên:
Trang Dev CodeIgniter Đầu Tiên của Tôi
- Miền:
servbay-codeigniter-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-codeigniter-app/public
Để biết chi tiết các bước thiết lập, vui lòng tham khảo Thêm Trang Web Đầu Tiên.
Thêm Mã Mẫu
Thêm mã sau vào tập tin app/Controllers/Home.php
:
namespace App\Controllers;
use CodeIgniter\Controller;
class Home extends Controller
{
public function index()
{
return 'Hello ServBay!';
}
public function memcached()
{
$cache = \Config\Services::cache();
$cache->save('key', 'Hello Memcached!', 60);
$value = $cache->get('key');
return $value;
}
public function redis()
{
$redis = \Config\Services::cache();
$redis->set('key', 'Hello Redis!');
$value = $redis->get('key');
return $value;
}
public function mysqlAdd()
{
$db = \Config\Database::connect();
$db->table('users')->insert([
'name' => 'ServBay',
'email' => '[email protected]',
]);
return 'User added';
}
public function mysql()
{
$db = \Config\Database::connect();
$users = $db->table('users')->get()->getResult();
return json_encode($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
Truy Cập Trang Web
Mở trình duyệt và truy cập vào URL sau:
https://servbay-codeigniter-test.local
: Bạn sẽ thấy trang web hiển thịHello ServBay!
.
Ví Dụ Cơ Sở Dữ Liệu NoSQL
Ví Dụ Memcached
Cài Đặt Tiện Ích Memcached
Tiện ích Memcached đã được cài sẵn trong ServBay, vì vậy không cần cài đặt thêm.
Cấu Hình Memcached
Cấu hình thông tin kết nối Memcached trong tập tin
app/Config/Cache.php
:phppublic $memcached = [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 1, ];
1
2
3
4
5Sử Dụng Memcached
Sử dụng cache trong controller:
phppublic function memcached() { $cache = \Config\Services::cache(); $cache->save('key', 'Hello Memcached!', 60); $value = $cache->get('key'); return $value; }
1
2
3
4
5
6
7Thêm route vào
app/Config/Routes.php
:php$routes->get('/memcached', 'Home::memcached');
1Mở trình duyệt và truy cập https://servbay-codeigniter-test.local/memcached
Ví Dụ Redis
Cài Đặt Tiện Ích Redis
Tiện ích Redis đã được cài sẵn trong ServBay, vì vậy không cần cài đặt thêm.
Cấu Hình Redis
Cấu hình thông tin kết nối Redis trong tập tin
app/Config/Cache.php
:phppublic string $handler = 'redis'; public $default = [ 'host' => '127.0.0.1', 'password' => null, 'port' => 6379, 'timeout' => 0, 'database' => 0, ];
1
2
3
4
5
6
7
8
9Sử Dụng Redis
Sử dụng cache trong controller:
phppublic function redis() { $redis = \Config\Services::cache(); $redis->save('key', 'Hello Redis!'); $value = $redis->get('key'); return $value; }
1
2
3
4
5
6
7Thêm route vào
app/Config/Routes.php
:php$routes->get('/redis', 'Home::redis');
1Mở trình duyệt và truy cập https://servbay-codeigniter-test.local/redis
Ví Dụ Cơ Sở Dữ Liệu Quan Hệ
Ví Dụ MySQL
Cấu Hình MySQL
Cấu hình thông tin kết nối MySQL trong tập tin
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8mb4', 'DBCollat' => 'utf8mb4_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Tạo Tập Tin Migration
Sử dụng công cụ CLI của CodeIgniter để tạo một tập tin migration:
bashphp spark make:migration create_users_table
1Chỉnh Sửa Tập Tin Migration
Tìm tập tin migration mới tạo trong thư mục
app/Database/Migrations
và chỉnh sửa nó để định nghĩa cấu trúc bảng cơ sở dữ liệu:phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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
32Chạy Migration
Sử dụng lệnh migration của CodeIgniter để chạy migration và tạo bảng cơ sở dữ liệu:
bashphp spark migrate
1Thêm Route
Thêm các route sau vào
app/Config/Routes.php
:php$routes->get('/mysql-add', 'Home::mysqlAdd'); $routes->get('/mysql', 'Home::mysql');
1
2Chèn Dữ Liệu Người Dùng
Chèn dữ liệu người dùng trong controller:
phppublic function mysqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9Sử Dụng MySQL
Gọi cơ sở dữ liệu trong controller:
phppublic function mysql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6Mở trình duyệt và truy cập
https://servbay-codeigniter-test.local/mysql-add
vàhttps://servbay-codeigniter-test.local/mysql
Ví Dụ PostgreSQL
Cấu Hình PostgreSQL
Cấu hình thông tin kết nối PostgreSQL trong tập tin
app/Config/Database.php
:phppublic $default = [ 'DSN' => '', 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_codeigniter_app', 'DBDriver' => 'Postgre', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 5432, ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Tạo Tập Tin Migration
Sử dụng công cụ CLI của CodeIgniter để tạo một tập tin migration:
bashphp spark make:migration create_users_table
1Chỉnh Sửa Tập Tin Migration
phpuse CodeIgniter\Database\RawSql; public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, ], 'created_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], 'updated_at' => [ 'type' => 'TIMESTAMP', 'default' => new RawSql('NOW()'), ], ]); $this->forge->addKey('id', true); $this->forge->createTable('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
32Chạy Migration
Sử dụng lệnh migration của CodeIgniter để chạy migration và tạo bảng cơ sở dữ liệu:
bashphp spark migrate
1Thêm Routes
Thêm các route sau vào
app/Config/Routes.php
:php$routes->get('/pgsql-add', 'Home::pgsqlAdd'); $routes->get('/pgsql', 'Home::pgsql');
1
2Chèn Dữ Liệu Người Dùng
Chèn dữ liệu người dùng trong controller:
phppublic function pgsqlAdd() { $db = \Config\Database::connect(); $db->table('users')->insert([ 'name' => 'ServBay', 'email' => '[email protected]', ]); return 'User added'; }
1
2
3
4
5
6
7
8
9Sử Dụng PostgreSQL
Gọi cơ sở dữ liệu trong controller:
phppublic function pgsql() { $db = \Config\Database::connect(); $users = $db->table('users')->get()->getResult(); return json_encode($users); }
1
2
3
4
5
6Mở trình duyệt và truy cập
https://servbay-codeigniter-test.local/pgsql-add
vàhttps://servbay-codeigniter-test.local/pgsql
Qua các bước trên, bạn đã thành công tạo và chạy một dự án CodeIgniter, sử dụng các tính năng của ServBay để quản lý và truy cập dự án của bạn, cũng như kết nối với nhiều cơ sở dữ liệu để tương tác với dữ liệu. Hy vọng bài viết này giúp bạn nhanh chóng bắt đầu với CodeIgniter và áp dụng nó vào các dự án của bạn.