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.1.14 - 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 StatusCodeskhai 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-helperthô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 systemtrong 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 Controllermới theo tài liệu CodeIgniter 3
- Kế thừa class từ HungNG_CI_Base_Controllersthay vìCI_Controller, ví dụ như sau
<?php
/**
 * Class Hungna_test
 *
 * @author    713uk13m <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
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 Controllermới theo tài liệu CodeIgniter 3
- Kế thừa class từ HungNG_CI_Base_Queue_Workerthay vìCI_Controller, ví dụ như sau
<?php
/**
 * Class My_worker
 *
 * @author    713uk13m <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
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 Controllermới theo tài liệu CodeIgniter 3
- Kế thừa class từ HungNG_CI_Base_RESTthay vìCI_Controller, ví dụ như sau
<?php
/**
 * Class My_rest_api
 *
 * @author    713uk13m <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
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_modelthay vìCI_Model, ví dụ như sau
<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
 * Class Credentials_model
 *
 * @author    713uk13m <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 * @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 <dev@nguyenanhung.com>
     * @copyright: 713uk13m <dev@nguyenanhung.com>
     */
    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: modulestrong thư mụcapplication. Tham khảo cấu trúc thư mụcmodules-samplestạ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.phpvớ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.phpvào fileconfig.php
require_once __DIR__ . '/hmvc.php';- Create file MY_Loader.phptrong 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 <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
class MY_Loader extends HungNG_Loader
{
}- Create file MY_Router.phptrong 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 <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
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 <dev@nguyenanhung.com>
 * @copyright 713uk13m <dev@nguyenanhung.com>
 */
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-helpervà 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 | dev@nguyenanhung.com | nguyenanhung5891 | @nguyenanhung | https://nguyenanhung.com |