Tạo và Chạy Dự Án CodeIgniter
CodeIgniter là gì?
CodeIgniter là một khung PHP nhẹ nhàng, phù hợp để phát triển các ứng dụng Web nhanh chóng và hiệu quả. Nó tuân theo mô hình MVC (Model-View-Controller) và cung cấp nhiều 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. CodeIgniter nổi tiếng về sự đơn giản, hiệu suất cao và dễ học, là lựa chọn hàng đầu của nhiều nhà phát triển.
Các tính năng chính và lợi ích của CodeIgniter
- Nhẹ nhàng: Hệ thống cốt lõi của CodeIgniter rất nhỏ gọn, chỉ bao gồm các thành phần cần thiết, tốc độ tải rất nhanh.
- Hiệu suất cao: CodeIgniter nổi bật về hiệu suất và tốc độ, có thể xử lý các yêu cầu đồng thời cao.
- Dễ học: Cung cấp API dễ sử dụng và tài liệu phong phú, giúp nhà phát triển nhanh chóng nắm bắt.
- Linh hoạt: Cho phép nhà phát triển tự do lựa chọn và sử dụng các thư viện và plugin của bên thứ ba, dễ dàng mở rộng và tùy chỉnh tính năng.
- Hỗ trợ cộng đồng mạnh mẽ: Có cộng đồng phát triển viên hoạt động mạnh và nhiểu hơn các phần mở rộng từ bên thứ ba.
CodeIgniter 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 các dự án ở mọi quy mô.
Tạo và chạy dự án CodeIgniter bằng 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 CodeIgniter. Chúng ta sẽ tận dụng tính năng 'Host' của ServBay để thiết lập máy chủ Web và thực hiện cấu hình đơn giản để truy cập dự án.
Chú ý: Nếu bạn đã từng sử dụng NGINX hoặc Apache
ServBay mặc định sử dụng Caddy làm máy chủ Web. Đối với những người dùng chuyển từ NGINX và Apache sang ServBay, có một số điểm khác biệt 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à gỡ lỗi. Nhà phát triển chỉ cần sử dụng tính năng 'Host' của ServBay để quản lý trang web, không cần chỉnh sửa thủ công tệp cấu hình của Caddy.
Quy tắc Rewrite và .htaccess
Trong NGINX và Apache, nhà phát triển thường cần tự viết các quy tắc Rewrite và tệp .htaccess để xử lý việc viết lại URL 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, do đó, 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 chuyển trang Apache sang ServBay, Cách chuyển trang NGINX sang ServBay.
Tạo dự án CodeIgniter
TIP
ServBay đề nghị nhà phát triển đặt trang Web vào thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài đặt Composer
ServBay đã đi kèm sẵn với Composer cài sẵn, không cần cài đặt riêng.
Tạo 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
4Chuyển vào thư mục dự án
Chuyển vào thư mục dự án CodeIgniter vừa 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 thông tin kết nối cơ sở dữ liệu trong tệp
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 tính năng 'Host' của ServBay để truy cập dự án CodeIgniter qua máy chủ Web. Trong cài đặt Host của ServBay, thêm một host mới:
- Tên:
My First CodeIgniter Dev Site
- Tên miền:
servbay-codeigniter-test.local
- Loại website:
PHP
- Phiên bản PHP: chọn
8.3
- Thư mục gốc trang web:
/Applications/ServBay/www/servbay-codeigniter-app/public
Tham khảo chi tiết các bước cài đặt tại Thêm trang web đầu tiên.
Thêm mã ví dụ
Trong tệp app/Controllers/Home.php
, thêm mã sau:
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 URL sau:
https://servbay-codeigniter-test.local
: Bạn sẽ thấy trang xuất raHello ServBay!
.
Ví dụ cơ sở dữ liệu NoSQL
Ví dụ 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 bổ sung.
Cấu hình Memcached
Cấu hình thông tin kết nối Memcached trong tệp
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 bộ đệm trong bộ điều khiển:
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 tuyến đường trong tệp
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 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 bổ sung.
Cấu hình Redis
Cấu hình thông tin kết nối Redis trong tệp
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 bộ đệm trong bộ điều khiển:
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 tuyến trong tệp
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ệ
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ụ CLI của CodeIgniter để tạo tệp migration:
bashphp spark make:migration create_users_table
1Chỉnh sửa tệp migration
Trong thư mục
app/Database/Migrations
, tìm tệp migration vừa tạo và chỉnh sửa để đị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, tạo bảng cơ sở dữ liệu:
bashphp spark migrate
1
Ví dụ MySQL
Cấu hình MySQL
Cấu hình thông tin kết nối MySQL trong tệp
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' => 'utf8', 'DBCollat' => 'utf8_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
19Thêm tuyến đường
Thêm các tuyến đường sau vào tệp
app/Config/Routes.php
:php$routes->get('/mysql-add', 'Home::mysqlAdd'); $routes->get('/mysql', 'Home::mysql');
1
2Ghi dữ liệu người dùng
Ghi dữ liệu người dùng trong bộ điều khiển:
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 bộ điều khiển:
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
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 migration database
Sử dụng lệnh sau để tạo tệp migration database:
bashphp spark make:migration create_users_table
1Chỉnh sửa tệp migration database
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 database
Thực hiện lệnh sau để chạy migration database và tạo cấu trúc bảng:
bashphp spark migrate
1Thêm tuyến đường
Thêm các tuyến đường sau vào tệp
app/Config/Routes.php
:php$routes->get('/pgsql-add', 'Home::pgsqlAdd'); $routes->get('/pgsql', 'Home::pgsql');
1
2Ghi dữ liệu người dùng
Ghi dữ liệu người dùng trong bộ điều khiển:
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 bộ điều khiển:
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
Thông qua các bước trên, bạn đã thành công tạo và chạy một dự án CodeIgniter, và 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ới nhiều cơ sở dữ liệu khác nhau và gọi dữ liệu. Hy vọng bài viết này giúp bạn dễ dàng làm quen với CodeIgniter và ứng dụng nó vào các dự án của mình.