
Trong bài viết này, chúng ta sẽ tìm hiểu CodeIgniter 4 cơ bản – phiên bản mới được viết lại hoàn toàn theo chuẩn PHP 7+ và lập trình hướng đối tượng (OOP). Đây là lựa chọn lý tưởng cho những ai mới học framework PHP.
1. Giới thiệu CodeIgniter 4
So sánh CI3 vs CI4
-
CI4 viết lại toàn bộ, tuân thủ chuẩn PHP 7+ & OOP, hỗ trợ PSR-4 autoload.
-
Có công cụ spark CLI giúp tạo code nhanh.
-
CI3 dùng phong cách procedural, trong khi CI4 hoàn toàn OOP.
➡ Lời khuyên: Người mới học nên bắt đầu ngay với CodeIgniter 4 cơ bản, không cần học CI3.
2. Cài đặt CI4
- Yêu cầu môi trường
- PHP ≥ 7.4 (khuyến nghị PHP 8.1+)
- Composer
- Database: MySQL/MariaDB (Postgres, SQLite cũng được)
- Cài đặt bằng Composer
composer create-project codeigniter4/appstarter ci4-app cd ci4-app php spark serve
→ Truy cập:
http://localhost:8080
3. Cấu trúc thư mục CI4
ci4-app/
│── app/ # Code chính (Controller, Model, View)
│── public/ # Nơi chứa index.php (điểm vào)
│── writable/ # Cache, logs, session
│── system/ # Core framework
│── .env # Config môi trường
│── spark # CLI tool
⭢ Quan trọng nhất: app/
chính là nơi chúng ta code.
4. Routing
- File:
app/Config/Routes.php
- Ví dụ:
$routes->get('/', 'Home::index'); // GET / $routes->get('/about', 'Page::about'); // GET /about $routes->post('/contact', 'Form::send'); // POST /contact
⭢ Mỗi route map tới Controller@Method
.
5. Controller
- Tạo controller:
php spark make:controller Hello
- File
app/Controllers/Hello.php
namespace App\Controllers; class Hello extends BaseController { public function index() { return "Hello World from CI4!"; } }
⭢ Truy cập: http://localhost:8080/hello
6. View
- Lưu file ở:
app/Views/hello.php
<h1>Hello, <?= $name; ?>!</h1>
- Trong Controller:
return view('hello', ['name' => 'Thanh']);
⭢ Kết quả: Hello, Thanh!
7. Model
- Tạo model:
php spark make:model PostModel
- File
app/Models/PostModel.php
namespace App\Models; use CodeIgniter\Model; class PostModel extends Model { protected $table = 'posts'; protected $primaryKey = 'id'; protected $allowedFields = ['title', 'content']; }
- Sử dụng trong Controller:
$postModel = new \App\Models\PostModel(); $posts = $postModel->findAll(); return view('posts/index', ['posts' => $posts]);
8. Migration & Seeder
- Migration tạo bảng:
php spark make:migration CreatePostsTable
- File
app/Database/Migrations/xxxx_CreatePostsTable.php
public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'unsigned' => true, 'auto_increment' => true ], 'title' => ['type' => 'VARCHAR', 'constraint' => 255], 'content' => ['type' => 'TEXT'], 'created_at' => ['type' => 'DATETIME', 'null' => true], 'updated_at' => ['type' => 'DATETIME', 'null' => true], ]); $this->forge->addKey('id', true); $this->forge->createTable('posts'); }
- Chạy migration:
php spark migrate
- Seeder (fake data):
php spark make:seeder PostSeeder
public function run() { $data = [ 'title' => 'Hello CI4', 'content' => 'Bài viết đầu tiên', ]; $this->db->table('posts')->insert($data); }
Chạy seeder:
php spark db:seed PostSeeder
✅ Sau bài 1, bạn sẽ biết:
- Cài đặt CI4
- Hiểu cấu trúc project
- Routing → Controller → View → Model → Database (CRUD cơ bản)
- Migration & Seeder để quản lý database
“Xem thêm: Roadmap CodeIgniter 4”.
Tham khảo: Tài liệu CodeIgniter 4