Repackaged version of CodeIgniter's system framework, compatible with Composer and PHP 7, PHP 8
Since version v3.2.0
- the framework is fully compatible with PHP 8.2
This package is constantly updated with new features from the original CodeIgniter3 branch. So it is always updated with bug fixes and added new features
Added some extension libraries, related helpers
- Base Controllers with many available protected methods
- Support HMVC model
- Support RESTful Web Service
- Support Queue Worker
- Support MongoDB database
- Support Elasticsearch: Use third party packages
"elasticsearch/elasticsearch": "^8.0 || ^7.0 || ^6.0 || ^5.0"
- Support Base Model class with some basic functions enough for SQL
- Support ORM Model class, providing a simpler and easier method to query
- Support Output Response on CLI interface via function
ResponseOutput::writeLn($message)
- Added
StatusCodes
class to declare standard HTTP codes (from Symfony framework), For example:StatusCodes::HTTP_OK
. For more details, please refer to classStatusCodes
- Add many useful helpers with the built-in package
nguyenanhung/codeigniter-basic-helper
via Composer
- Install the package into the project with the following command
composer require nguyenanhung/codeigniter-framework
- Update the
index.php
file
Find the line
/*
*---------------------------------------------------------------
* 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';
Edit as follows
/*
*---------------------------------------------------------------
* 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';
- Delete the
system
folder in the project root folder for neatness
In the library, there is a built-in Base Controller, inherit as follows
- Build a new
Controller
according to the CodeIgniter 3 documentation - Inherit the class from
HungNG_CI_Base_Controllers
instead ofCI_Controller
, for example as follows
<?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();
}
}
In the library, there is a built-in Base Queue Worker (built by yidas), inherit as follows
- Build a new
Controller
according to the CodeIgniter 3 documentation - Inherit the class from
HungNG_CI_Base_Queue_Worker
instead ofCI_Controller
, for example as follows
<?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() {}
}
Learn more details in the documentation here: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-queue-worker
In the library, there is a pre-built RESTful Base (built by yidas), inherit as follows
- Build a new
Controller
according to the CodeIgniter 3 documentation - Inherit the class from
HungNG_CI_Base_REST
instead ofCI_Controller
, for example as follows
<?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);
}
}
Learn more details in the documentation here: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-rest
- Build a model according to the CodeIgniter 3 documentation
- Inherit the class from
HungNG_Custom_Based_model
instead ofCI_Model
, for example as follows
<?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';
}
}
- This package adds a modern way to write models in ORM style with Elegant patterns like Laravel Eloquent ORM & Yii2 Active Record (built by yidas)
- Read detailed documentation on how to integrate and deploy here with visual and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-orm-model
-
This package adds a simple SEO library and helper
-
Read detailed documentation on how to integrate and deploy here with visual and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/blob/main/codeigniter3-basic-seo/README.md
- By default, CodeIgniter v3 does not support MongoDB. However, that is not a limitation, CodeIgniter is an open framework, so I have added a library to support calling, interacting, and processing with MongoDB database, which is also quite similar to CodeIgniter 2's Query Builder. Read detailed documentation on how to integrate and deploy here with intuitive and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-mongodb
- By default, CodeIgniter v3 does not support Elasticsearch. However, that does not limit it, CodeIgniter is an open framework, so I have added a library to support calling and interacting with Elasticsearch
- Read detailed documentation on how to integrate and deploy here with intuitive and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-elasticsearch
- Create folder:
modules
in theapplication
folder. Refer to themodules-samples
folder structure at 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
with the following content
<?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/'
);
- Load the
hmvc.php
file into theconfig.php
file
require_once __DIR__ . '/hmvc.php';
- Create file
MY_Loader.php
in folderapplication/core/
with following content
<?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
in folderapplication/core/
with following content
<?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
{
}
- Deploy the code in the new modules folder, similar to the following
<?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.
-
Read detailed documentation on how to integrate and deploy here with visual and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter3-filename-checker
Instructions for logging all queries in CodeIgniter and recording the Execution Time of each Queries
-
By default, CodeIgniter v3 does not support logging the Execution Time of Queries. However, you can use Hooks to do this
-
Read the detailed documentation on how to integrate and deploy here with visual and specific examples: https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-log-all-queries
- Over the years of programming with CodeIgniter, I have collected, built and written quite a few helpers, I have
packaged
them into the package
nguyenanhung/codeigniter-basic-helper
and integrated them into this package. - This helper package is still being operated and developed by me every day, the number of projects integrating the functions in this package has reached thousands
- More detailed information about this helper set https://github.com/nguyenanhung/codeigniter-basic-helper
Name | Skype | Website | ||
---|---|---|---|---|
Hung Nguyen | [email protected] | nguyenanhung5891 | @nguyenanhung | https://nguyenanhung.com |