nguyenanhung / codeigniter-framework
CodeIgniter 框架 - v3.2.0
v3.2.0.36
2024-09-21 20:25 UTC
Requires
- php: >=5.6
- ext-json: *
- nguyenanhung/codeigniter-basic-helper: >=1.0
- symfony/polyfill-mbstring: >=1.0
Requires (Dev)
- nguyenanhung/my-debug: ^4.0 || ^3.0 || ^2.0 || ^1.0
Suggests
- nguyenanhung/basic-firewall: PHP Basic Firewall - Library providing IP filtering features
- nguyenanhung/database: Need support for Powerful SQL Database Tools (Customize Laravel Database)
- nguyenanhung/helpers: Awesome Helpers - Powerful Library, Helpers and Tools
- nguyenanhung/image: Need support for Image Service
- nguyenanhung/markdown: Parser for Markdown
- nguyenanhung/monitor: Need support for Send Monitor Message to Monitor Service
- nguyenanhung/my-cache: Need support for Powerful Cache Implement
- nguyenanhung/my-debug: Need support for Powerful Logger (Extend from Monolog)
- nguyenanhung/requests: Need support for Powerful HTTP Request
- nguyenanhung/security: Awesome Helpers - Wrapper for Security, Encrypt, Encode, Purifier
- nguyenanhung/seo: Need support for SEO
- nguyenanhung/validation: Awesome Validation - A fast, extensible & stand-alone PHP input validation class that allows you to validate any data
- dev-master
- v3.2.0.36
- v3.2.0.35
- v3.2.0.34
- v3.2.0.33
- v3.2.0.32
- v3.2.0.31
- v3.2.0.30
- v3.2.0.29
- v3.2.0.28
- v3.2.0.27
- v3.2.0.26
- v3.2.0.25
- v3.2.0.24
- v3.2.0.23
- v3.2.0.22
- v3.2.0.21
- v3.2.0.20
- v3.2.0.19
- v3.2.0.18
- v3.2.0.17
- v3.2.0.16
- v3.2.0.15
- v3.2.0.14
- v3.2.0.13
- v3.2.0.12
- v3.2.0.11
- v3.2.0.10
- v3.2.0.9
- v3.2.0.8
- v3.2.0.7
- v3.2.0.6
- v3.2.0.5
- v3.2.0.4
- v3.2.0.3
- v3.2.0.2
- v3.2.0.1
- v3.2.0
- v3.1.15.14
- v3.1.15.13
- v3.1.15.12
- v3.1.15.11
- v3.1.15.10
- v3.1.15.9
- v3.1.15.8
- v3.1.15.7
- v3.1.15.6
- v3.1.15.5
- v3.1.15.4
- v3.1.15.3
- v3.1.15.2
- v3.1.15.1
- v3.1.15
- v3.1.14.21
- v3.1.14.20
- v3.1.14.19
- v3.1.14.18
- v3.1.14.17
- v3.1.14.16
- v3.1.14.15
- v3.1.14.14
- v3.1.14.13
- v3.1.14.12
- v3.1.14.11
- v3.1.14.10
- v3.1.14.9
- v3.1.14.8
- v3.1.14.7
- v3.1.14.6
- v3.1.14.5
- v3.1.14.4
- v3.1.14.3
- v3.1.14.2
- v3.1.14.1
- v3.1.14
- v3.1.13.21
- v3.1.13.20
- v3.1.13.19
- v3.1.13.18
- v3.1.13.17
- v3.1.13.16
- v3.1.13.15
- v3.1.13.14
- v3.1.13.13
- v3.1.13.12
- v3.1.13.11
- v3.1.13.10
- v3.1.13.9
- v3.1.13.8
- v3.1.13.7
- v3.1.13.6
- v3.1.13.5
- v3.1.13.4
- v3.1.13.3
- v3.1.13.2
- v3.1.13.1
- v3.1.13
- v3.1.12.11
- v3.1.12.10
- v3.1.12.9
- v3.1.12.8
- v3.1.12.7
- v3.1.12.6
- v3.1.12.5
- v3.1.12.4
- v3.1.12.3
- v3.1.12.2
- v3.1.12.1
- v3.1.12
- v3.1.11.15
- v3.1.11.14
- v3.1.11.13
- v3.1.11.12
- v3.1.11.11
- v3.1.11.10
- v3.1.11.9
- v3.1.11.8
- v3.1.11.7
- v3.1.11.6
- v3.1.11.5
- v3.1.11.4
- v3.1.11.3
- v3.1.11.2
- v3.1.11.1
- v3.1.11
- dev-v3.2.0-develop
- dev-v3.1-stable
This package is auto-updated.
Last update: 2024-09-21 20:26:23 UTC
README
重新打包 CodeIgniter 的 system framework 目录,使用与 Composer 和 PHP 7、PHP 8 兼容的方式
从 v3.2.0
版本开始 - 框架完全兼容 PHP 8.2 版本
此打包版本会持续更新来自原始 CodeIgniter3 分支的新功能。因此,它将不断更新错误修复和新功能
目录
- 功能
- 安装指南
- 使用指南
- 编写继承 Base Controller 的 Controller 指南
- 编写运行 Queue Worker 的 Controller 指南
- 编写运行 RESTful API Service 的 Controller 指南
- 指导将 HMVC (模块化) 模型集成到项目中
- 编写继承 Base Model 的 Model 指南
- 编写继承 Base ORM Model 的 Model 指南
- 指导实现基本 SEO 集成
- 指导在项目中使用 MongoDB 数据库
- 指导在项目中使用 Elasticsearch
- 指导检查项目中的文件名是否符合 CodeIgniter 标准
- 指导记录 CodeIgniter 中的所有查询并记录每个查询的执行时间
- CodeIgniter 基本助手
- 联系 & 支持
主要功能
添加了一些扩展库和助手
- 带有许多受保护的方法的 Base Controllers
- 支持 HMVC 模型
- 支持 RESTful Web 服务
- 支持 Queue Worker
- 支持 MongoDB 数据库
- 支持 Elasticsearch:使用第三方软件包
"elasticsearch/elasticsearch": "^8.0 || ^7.0 || ^6.0 || ^5.0"
- 支持具有足够使用 SQL 的基本函数的 Base Model 类
- 支持 ORM Model 类,提供一种简单且易于查询的方法
- 通过函数
ResponseOutput::writeLn($message)
在 CLI 界面上支持输出响应 - 添加了预定义的 HTTP 状态码的
StatusCodes
类,例如StatusCodes::HTTP_OK
。详细信息请参考StatusCodes
类 - 通过 Composer 预先安装
nguyenanhung/codeigniter-basic-helper
包添加了许多有用的助手
将包安装到项目中的指南
- 使用以下命令将包安装到项目中:
composer require nguyenanhung/codeigniter-framework
- 更新
index.php
文件
查找以下行:
/* *--------------------------------------------------------------- * 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';
更改为以下内容:
/* *--------------------------------------------------------------- * 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';
- 从项目根目录中删除
system
目录以节省空间
使用指南
编写继承 Base Controller 的 Controller 指南
在库中已构建了一个 Base Controller,继承方式如下:
- 根据 CodeIgniter 3 文档创建一个新的
Controller
- 从
HungNG_CI_Base_Controllers
继承类而不是CI_Controller
,例如:
<?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(); } }
编写运行 Queue Worker 的 Controller 指南
在库中已构建了一个 Base Queue Worker(由 yidas 构建),继承方式如下:
- 根据 CodeIgniter 3 文档创建一个新的
Controller
- 从
HungNG_CI_Base_Queue_Worker
继承类而不是CI_Controller
,例如:
<?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() {} }
有关详细信息,请参阅此处文档:[链接](https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-queue-worker)
编写运行 RESTful API Service 的 Controller 指南
在已构建的库中已经构建了一个Base RESTful(由yidas构建),继承如下
- 根据 CodeIgniter 3 文档创建一个新的
Controller
- 从
HungNG_CI_Base_REST
继承类而不是从CI_Controller
,例如如下
<?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); } }
了解更多详细信息,请参阅此处文档:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-rest
编写继承 Base Model 的 Model 指南
- 根据CodeIgniter 3文档构建一个模型
- 从
HungNG_Custom_Based_model
继承类而不是从CI_Model
,例如如下
<?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'; } }
编写继承 Base ORM Model 的 Model 指南
- 此包增加了一种编写模型的方法,采用类似于Laravel Eloquent ORM和Yii2 Active Record的Elegant patterns ORM风格(由yidas构建)
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-orm-model
基本SEO集成指南
- 此包增加了一个简单的SEO库和helper
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/blob/main/codeigniter3-basic-seo/README.md
指导在项目中使用 MongoDB 数据库
- 默认情况下,CodeIgniter v3不支持MongoDB。然而,这并不会限制,因为CodeIgniter是一个开源框架,所以我增加了一个库来支持调用、交互和处理MongoDB数据库,其使用方法也与CodeIgniter的Query Builder类似
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-mongodb
指导在项目中使用 Elasticsearch
- 默认情况下,CodeIgniter v3不支持Elasticsearch。然而,这并不会限制,因为CodeIgniter是一个开源框架,所以我增加了一个库来支持调用和操作Elasticsearch
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-elasticsearch
集成HMVC模型到项目的指南
- 在
application
目录下创建一个modules
文件夹。请参考modules-samples
的目录结构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
- 创建一个名为
hmvc.php
的文件,内容如下
<?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/' );
- 在
config.php
文件中加载hmvc.php
文件
require_once __DIR__ . '/hmvc.php';
- 在
application/core/
目录下创建一个名为MY_Loader.php
的文件,内容如下
<?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 { }
- 在
application/core/
目录下创建一个名为MY_Router.php
的文件,内容如下
<?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 { }
- 在新的
modules
目录中编写代码,例如如下
<?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(); } }
指导检查项目中的文件名是否符合 CodeIgniter 标准
- 此控制器检查CodeIgniter 3.0类文件名。
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter3-filename-checker
指导记录 CodeIgniter 中的所有查询并记录每个查询的执行时间
- 默认情况下,CodeIgniter v3不支持记录查询的执行时间。然而,可以使用Hooks来实现这一点
- 请在此处阅读有关如何集成和部署的详细文档,包括直观和具体的示例:https://github.com/nguyenanhung/codeigniter-framework-sample/tree/main/codeigniter-log-all-queries
CodeIgniter 基本助手
- 多年来使用CodeIgniter编程,我已经收集、构建和编写了许多helper,我将它们打包成
nguyenanhung/codeigniter-basic-helper
包,并将其集成到这个包中。 - 这个helper包目前正在由我进行维护和开发,每天都会进行更新,集成此包中的函数的项目数量已经达到数千个。
- 关于这个helper包的更详细信息,请访问https://github.com/nguyenanhung/codeigniter-basic-helper