Bản đóng gói lại thư mục system framework của CodeIgniter, sử dụng tương thích với Composer và PHP 7, PHP 8
Kể từ phiên bản v3.2.0
- framework hoàn toàn tương thích với phiên bản PHP 8.2
Bản đóng gói này được liên tục cập nhật với các feature mới từ nhánh CodeIgniter3 nguyên bản. Vì vậy nó luôn được cập nhật các bản vá lỗi và bổ sung thêm nhiều tính năng mới
- Tính năng
- Hướng dẫn cài đặt
- Hướng dẫn sử dụng
- Hướng dẫn viết Controller kế thừa Base Controller
- Hướng dẫn viết Controller chạy Queue Worker
- Hướng dẫn viết Controller chạy RESTful API Service
- Hướng dẫn tích hợp mô hình HMVC (Modular) vào dự án
- Hướng dẫn viết Model kế thừa Base Model
- Hướng dẫn viết Model kế thừa Base ORM Model
- Hướng dẫn viết tích hợp SEO cơ bản
- Hướng dẫn sử dụng CSDL MongoDB trong dự án
- Hướng dẫn sử dụng Elasticsearch trong dự án
- Hướng dẫn sử dụng kiểm tra các filename trong dự án của bạn đã đúng chuẩn của CodeIgniter hay chưa
- Hướng dẫn sử dụng ghi log tất cả các queries trong CodeIgniter và ghi lại Execution Time của từng Queries
- CodeIgniter Basic Helper
- Liên hệ & Hỗ trợ
Bổ sung thêm 1 số thư viện mở rộng, helpers liên quan
- Base Controllers với nhiều protected method sẵn có
- Support mô hình HMVC
- Support RESTful Web Service
- Support Queue Worker
- Support CSDL MongoDB
- Support Elasticsearch: Use third party packages
"elasticsearch/elasticsearch": "^8.0 || ^7.0 || ^6.0 || ^5.0"
- Support class Base Model với 1 số hàm cơ bản đủ dùng với SQL
- Support class ORM Model, cung cấp 1 phương thức đơn giản và dễ dàng hơn để query
- Hỗ trợ Output Response trên giao diện CLI thông qua hàm
ResponseOutput::writeLn($message)
- Bổ sung class
StatusCodes
khai báo sẵn các HTTP code tuân chuẩn (from Symfony framework), VD:StatusCodes::HTTP_OK
. Chi tiết tham khảo thêm tại classStatusCodes
- Bổ sung rất nhiều helper tiện dụng với việc tích hợp sẵn gói
nguyenanhung/codeigniter-basic-helper
thông qua Composer
- Cài đặt gói vào trong dự án với lệnh sau
composer require nguyenanhung/codeigniter-framework
- Cập nhật file
index.php
Tìm dòng
/*
*---------------------------------------------------------------
* SYSTEM DIRECTORY NAME
*---------------------------------------------------------------
*
* This variable must contain the name of your "system" directory.
* Set the path if it is not in the same directory as this file.
*/
$system_path = 'system';
Sửa thành như sau
/*
*---------------------------------------------------------------
* SYSTEM DIRECTORY NAME
*---------------------------------------------------------------
*
* This variable must contain the name of your "system" directory.
* Set the path if it is not in the same directory as this file.
*/
$system_path = '/your_vendor_path/nguyenanhung/codeigniter-framework/system';
- Xoá thư mục
system
trong thư mục gốc dự án đi cho gọn
Trong thư viện đã xây dựng sẵn 1 Base Controller, kế thừa như sau
- Xây dựng 1
Controller
mới theo tài liệu CodeIgniter 3 - Kế thừa class từ
HungNG_CI_Base_Controllers
thay vìCI_Controller
, ví dụ như sau
<?php
/**
* Class Hungna_test
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class Hungna_test extends HungNG_CI_Base_Controllers
{
public function __construct()
{
parent::__construct();
}
public function index()
{
echo "This is ".get_class($this); // show: This is Hungna_test
exit();
}
}
Trong thư viện đã xây dựng sẵn 1 Base Queue Worker (được xây dựng bởi yidas), kế thừa như sau
- Xây dựng 1
Controller
mới theo tài liệu CodeIgniter 3 - Kế thừa class từ
HungNG_CI_Base_Queue_Worker
thay vìCI_Controller
, ví dụ như sau
<?php
/**
* Class My_worker
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class My_worker extends HungNG_CI_Base_Queue_Worker
{
// Initializer
protected function init() {}
// Worker
protected function handleWork() {}
// Listener
protected function handleListen() {}
}
Tìm hiểu thêm chi tiết tài liệu tại đây: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-queue-worker
Trong thư viện đã xây dựng sẵn 1 Base RESTful (được xây dựng bởi yidas), kế thừa như sau
- Xây dựng 1
Controller
mới theo tài liệu CodeIgniter 3 - Kế thừa class từ
HungNG_CI_Base_REST
thay vìCI_Controller
, ví dụ như sau
<?php
/**
* Class My_rest_api
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class My_rest_api extends HungNG_CI_Base_REST
{
public function index()
{
return $this->response->json(['bar'=>'foo']);
}
public function store($requestData=null) {
$this->db->insert('mytable', $requestData);
$id = $this->db->insert_id();
return $this->response->json(['id'=>$id], 201);
}
}
Tìm hiểu thêm chi tiết tài liệu tại đây: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-rest
- Xây dựng 1 model theo tài liệu CodeIgniter 3
- Kế thừa class từ
HungNG_Custom_Based_model
thay vìCI_Model
, ví dụ như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class Credentials_model
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
* @property \CI_DB_query_builder $db
*/
class Credentials_model extends HungNG_Custom_Based_model
{
const IS_ACTIVE = 1;
const ROLE_PUSH = 1;
const ROLE_PULL = 2;
const ROLE_FULL = 3;
protected $fieldUsername;
protected $fieldStatus;
protected $fieldRole;
/**
* Credentials_model constructor.
*
* @author : 713uk13m <[email protected]>
* @copyright: 713uk13m <[email protected]>
*/
public function __construct()
{
parent::__construct();
$this->db = $this->load->database('default', true, true);
$this->tableName = 'credentials';
$this->primary_key = 'id';
$this->fieldUsername = 'username';
$this->fieldStatus = 'status';
$this->fieldRole = 'role';
}
}
- Package này bổ sung thêm 1 phương án viết model hiện đại theo phong cách ORM với Elegant patterns giống như Laravel Eloquent ORM & Yii2 Active Record (được xây dựng bởi yidas)
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-orm-model
- Package này bổ sung thêm 1 thư viện và helper SEO đơn giản
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/blob/main/codeigniter3-basic-seo/README.md
- Mặc định, CodeIgniter v3 không hỗ trợ MongoDB. Tuy nhiên không vì thế mà hạn chế, CodeIgniter là framework mở, vì vậy tôi đã bổ sung thêm 1 thư viện hỗ trợ việc gọi, tương tác, xử lý với CSDL MongoDB mà cách sử dụng cũng tương đối giống với Query Builder của CodeIgniter
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-mongodb
- Mặc định, CodeIgniter v3 không hỗ trợ Elasticsearch. Tuy nhiên không vì thế mà hạn chế, CodeIgniter là framework mở, vì vậy tôi đã bổ sung thêm 1 thư viện hỗ trợ việc gọi, tác với Elasticsearch
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-elasticsearch
- Create folder:
modules
trong thư mụcapplication
. Tham khảo cấu trúc thư mụcmodules-samples
tại https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/modules-sample
.
└── modules
└── startup
├── config
│ ├── index.html
│ └── routes.php
├── controllers
│ ├── Startup.php
│ └── index.html
├── index.html
├── models
│ ├── Startup_model.php
│ └── index.html
└── views
└── index.html
6 directories, 8 files
- Create file
hmvc.php
với nội dung như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/*
| -------------------------------------------------------------------------
| HMVC settings
| -------------------------------------------------------------------------
| See: https://github.com/nguyenanhung/CodeIgniter-HMVC
|
*/
$config['modules_locations'] = array(
APPPATH . 'modules/' => '../modules/'
);
- Nạp file
hmvc.php
vào fileconfig.php
require_once __DIR__ . '/hmvc.php';
- Create file
MY_Loader.php
trong thư mụcapplication/core/
có nội dung như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class MY_Loader
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class MY_Loader extends HungNG_Loader
{
}
- Create file
MY_Router.php
trong thư mụcapplication/core/
có nội dung như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class MY_Router
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class MY_Router extends HungNG_Router
{
}
- Triển khai viết code trong thư mục modules mới, tương tự như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Class TestModule
*
* @author 713uk13m <[email protected]>
* @copyright 713uk13m <[email protected]>
*/
class TestModule extends HungNG_CI_Base_Module
{
public function __construct()
{
parent::__construct();
}
public function index()
{
echo "This is ".get_class($this); // show: This is TestModule
exit();
}
}
- This controller checks CodeIgniter 3.0 class filename.
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter3-filename-checker
Hướng dẫn sử dụng ghi log tất cả các queries trong CodeIgniter và ghi lại Execution Time của từng Queries
- Mặc định, CodeIgniter v3 không hỗ trợ ghi log Execution Time của các Queries. Tuy nhiên, có thể sử dụng Hooks để thực hiện điều này
- Đọc tài liệu chi tiết về cách tích hợp và triển khai tại đây với những ví dụ trực quan và cụ thể: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-log-all-queries
- Trong nhiều năm làm lập trình với CodeIgniter, tôi đã sưu tập, xây dựng và viết được kha khá helper, tôi đã đóng gói
chúng lại thành gói
nguyenanhung/codeigniter-basic-helper
và tích hợp vào bên trong gói này. - Gói helper này vẫn đang được tôi vận hành và phát triển hàng ngày, số project tích hợp các hàm trong gói này đã lên con số hàng nghìn
- Thông tin chi tiết hơn về bộ helper này https://github.com/nguyenanhung/codeigniter-basic-helper
Name | Skype | Website | ||
---|---|---|---|---|
Hung Nguyen | [email protected] | nguyenanhung5891 | @nguyenanhung | https://nguyenanhung.com |