• Stars
    star
    140
  • Rank 260,530 (Top 6 %)
  • Language
    PHP
  • Created over 16 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Adding HMVC support to CodeIgniter. 为 CodeIgniter 增加 HMVC 支持。

欢迎大家使用 CodeIgniter HMVC 扩展!

如果您还不了解什么是 HMVC,请先移步维基百科查看:

http://zh.wikipedia.org/wiki/HMVC

一直感觉 CodeIgniter 缺乏好的 HMVC 架构,而且我个人认为目前的几个 HMVC 第三方类库都不是很好,有的要修改 CI 的源代码,有的要引入新的语法,这都不是我喜欢的方式,所以我自己思考了一个方案,希望大家多多提出宝贵意见。这个 HMVC 的特点就是不修改 CI 源代码,不引入新的语法,完全是利用 CI 强大的扩展机制。

目前的扩展方式是在 application 目录下增加 modules 目录,每个模块有自己的目录,并且模块可以有一级子目录,比如 application/modules/目录/模块名/....

每个模块都有自己的 MVC 结构,像这样 application/modules/模块名/controllersapplication/modules/模块名/modelsapplication/modules/模块名/views 在视图中装载模块:

$this->load->module('模块名/控制器/方法');

这里也可以使用 URL 路由中的默认控制器,默认的方法是 index() 方法,和普通控制器保持一致。如果要传递参数:

$this->load->module('模块名/控制器/方法', array('参数1', '参数2', ...));

如果需要返回模块的结果而不想输出到屏幕,可以把第 3 个参数设置为 TRUE:

$this->load->module('模块名', array('参数1', '参数2', ...), TRUE);

如果需要从 URL 访问某个模块的某个方法,URL 规则是这样的:

http://domain/index.php/module/模块名/控制器/方法

实际上 /module 后面的内容和前面传入 $this->load->module() 中的参数一致。

如果要通过 URL 传递参数,则直接加在 URL 后面:

http://domain/index.php/module/模块名/控制器/方法/参数1/参数2/..../参数n

另外,这里的 URI 可以使用路由规则,也就是说什么样的 URL 都可以,只要最后路由成符合上面的规则即可,比如要使用这样的 URL:

http://domain/index.php/m/模块名/控制器/方法

可以在 routers.php 里添加一个路由规则:

$route['m/(:any)/(:any)/(:any)/(:any)'] = 'module/$1/$2/$3/$4';

或者

$route['m/(.*)'] = 'module/$1';

如果要在某个模块的视图里生成访问当前模块当前控制器的某方法的 URL,可以在视图里这样写:

<?php echo $this->module_url('要访问的方法名/参数1/..../参数n'); ?>

如果要生成当前模块其他控制器的方法的 URL,可以这样:

<?php echo $this->module_url('要访问的方法名/参数1/..../参数n', '控制器名'); ?>

基本上就是这样,如果大家有不清楚的,我会在论坛详细解答:

http://codeigniter.org.cn/forums/thread-1319-1-1.html

压缩包解压后,其中有控制器、模型、视图和模块的简单例子,并且其中只包含模块所需的代码,不包含 CI 核心代码。

更新记录

  • 2017.07.01 支持 CodeIgniter 3.1.5。
  • 2016.11.20 支持 CodeIgniter 3.1.2 & 修复一些 BUG。
  • 2016.4.25 支持 CodeIgniter 3.0.6
  • 2013.4.18 修复一个在模块中的模型,无法访问当前模块变量的 BUG。
  • 2012.4.8 修复一个自动装载类库后,模块中此类库无法使用的 BUG。
  • 2012.2.19 增加对 CodeIgniter 2.1.0 的支持。
  • 2011.8.9 修复从 URL 访问 Module 的时候,autoload 无效的 BUG。
  • 2011.7.28 增加从 URL 访问 Module 的功能。
  • 2011.4.13 修正 autoload 对 module 无效的 BUG。
  • 2011.4.11 支持最新的 CI 2.0.0,完全为 PHP5 重写 HMVC 所有代码。
  • 2011.1.8 支持在控制器里直接载入一个或多个模块;修复在模块里装载类库报错的 BUG;
  • 2010.12.15 支持在控制器中直接装载模块。
  • 2010.8.7 修正一个在 Module 的构造函数中装载 Model 报错的 BUG。

More Repositories

1

smzdm_script

smzdm 自用脚本 for 青龙面板,支持 App 端签到、转盘抽奖、每日任务等功能
JavaScript
624
star
2

Transformers

JavaScript's component-based development framework, if you want to develop projects in a building block way, then try Transformers framework. 基于 JavaScript 的组件化开发框架,如果你想以搭积木的方式开发项目,那就试试 Transformers 框架吧~
JavaScript
83
star
3

vscode-stylelint-plus

A Visual Studio Code extension to lint CSS/SCSS/Less with stylelint, support auto fix on save.
JavaScript
34
star
4

vite-plugin-virtual-html-template

HTML template for vite app, support flexible virtual URL.
JavaScript
28
star
5

px2rem-plus-vscode

Convert px to rem extension for Visual Studio Code.
JavaScript
25
star
6

atom-tree-view-sort

Add a sorting feature for the Atom tree-view package.
JavaScript
23
star
7

hulk-template

为 CodeIgniter 框架增加视图继承功能,不改变原有视图编写方式,无缝增加视图继承功能。
PHP
17
star
8

resource-uploader

Front-end resource upload and processing tools using AliCloud. 一站式前端资源上传和处理工具。
JavaScript
16
star
9

vue-async-bootstrap-modal-demo

A Vue.js async bootstrap modal(dialog) demo.
JavaScript
15
star
10

deployer

基于 NodeJS 的命令行轻量级部署工具
JavaScript
10
star
11

geak-audio-app

GEAK Audio 果壳智能音响桌面工具
Vue
8
star
12

presentation

一些分享
JavaScript
8
star
13

docker-nginx-lua-sass

Nginx with Lua module for Docker, support sass language.
Lua
7
star
14

micro-site-vite

基于 Vite 的微站点脚手架项目
JavaScript
7
star
15

Othello

Othello network game based on Visual Basic 6 developed in 2002. 2002 年开发的基于 VB6 的黑白棋网络对战游戏。
Visual Basic
7
star
16

docker-nginx-php-fpm

Nginx and PHP-FPM for Docker, use S6.
Nginx
6
star
17

geak-audio

基于 Node.js 的 Geak Audio 果壳智能音响播放工具
JavaScript
5
star
18

micro-site

微站点脚手架
JavaScript
4
star
19

hex-ci.github.io

HTML
4
star
20

tiny-mvc-from-codeigniter-4

超精简 MVC 框架,代码基于 CodeIgniter 4,支持 PHP 5.4
PHP
4
star
21

njwap-projects-tree-view-vscode

njwap 资源管理器 for VSCode
JavaScript
4
star
22

discuz-plugins

为 Discuz! 论坛做的一些插件。
PHP
4
star
23

no-merge-button

Disable GitLab interactive conflict resolution in testing branch.
JavaScript
4
star
24

postcss-unit-processor

PostCSS plugin to process css unit.
JavaScript
4
star
25

ht-basic-demo

小时候用 BT-686 小电脑的 HT-BASIC 语言写的程序,经过转换放到 Github 上留念~
2
star
26

Hyper-Reader

2000 年开发的一个 DOS 下的读书软件
C
2
star
27

fe-build-and-deployment-demo

前端构建与部署演示项目
JavaScript
2
star
28

babel-fastcgi

Compiling JavaScript with Babel on the fastcgi server.
JavaScript
2
star
29

basic-to-text

1999 年写的 BT-686 多媒体小电脑 BASIC 文件转成文本文件的程序
C++
2
star
30

Othello-AI

黑白棋.Net 动态链接库
Pascal
1
star
31

Othello-Help

黑白棋.Net 帮助文档
HTML
1
star
32

hex-ci

1
star
33

multi-cascader-demo

Vue
1
star
34

atom-language-hulk-template

Hulk Template language package for Atom.
CoffeeScript
1
star
35

Othello-Server

黑白棋.Net 服务器端
PHP
1
star
36

webpack-upload-alioss-plugin

JavaScript
1
star
37

micro-site-service

1
star
38

ASM-for-motorola-68

2003 年开发的一个摩托罗拉68系列芯片汇编程序
C++
1
star
39

Othello-for-VC

2002 年开发的一个简单的黑白棋游戏,自带简单AI。
C++
1
star