mufidjamaluddin / codeigniter4-hmvc
CodeIgniter4 HMVC 入门应用程序
Requires
- php: >=7.2
- codeigniter4/framework: ^4.2
Requires (Dev)
- mikey179/vfsstream: 1.6.*
- phpunit/phpunit: 8.5.*
README
这是一个使用 CodeIgniter4 框架的分层模型-视图-控制器 (HMVC) 项目入门模板。通过 HMVC 架构,我希望我们能创建可扩展的 Web 应用程序。
先决条件
- PHP 7.2 或更高版本
- Composer 版本 1.10 或更高版本
- Intl PHP 扩展(用于格式化货币、数字和日期/时间,请参阅 CodeIgniter4 文档)
- xdebug PHP 扩展(仅用于测试目的,可选)
- php_sqlite3 PHP 扩展(仅用于测试目的,非常可选)
如何使用
- 运行
composer create-project mufidjamaluddin/codeigniter4-hmvc your_project
,以创建基于此模板的项目。 - 通过更改
env
文件来配置应用程序。 - 运行
php spark serve
以运行应用程序。
创建新模块
教程
- 更新 spark 文件
composer update
cp vendor/codeigniter4/framework/public/index.php public/index.php
cp vendor/codeigniter4/framework/spark .
-
调用
php spark module
命令,然后输入模块、控制器和模型名称(自动配置路由模块)。 -
运行
composer test
以运行您的测试用例(可选,请参阅 CodeIgniter4 文档 或 PHPUnit 文档) -
通过
php spark serve
命令在浏览器中运行
屏幕截图示例
注意事项
在创建或更改模块、控制器或控制器方法后,除了手动配置模块路由外,始终运行 php spark route:update
命令。
命令提示符
命令模块、控制器和模型创建
在模块内部创建控制器(必需)和模型的最简单方法。如果不存在,则创建模块或模型。
用法:调用 php spark module
命令,然后输入模块、控制器和模型名称。
命令 route:update 参数
参数:'-n' = 设置模块命名空间(默认 App\Modules) '-i' = 设置具有 /index 路径的路径(true/false,默认 true) '-m' = 设置要创建/更新的一个模块名称(app/Modules/YourModuleName) '-f' = 设置 app 路径内的模块文件夹(默认 Modules)
用法命令 php spark route:update -i false -m YourModule
命令 module:create 参数
示例 php spark module:create invoice
第一个参数(invoice)是您的新模块。
PHPUnit
您可以通过运行 composer test
运行所有测试用例。
其他命令
您可以通过运行 php spark list
和 composer.json > 脚本中的 composer 命令来获取所有命令提示符列表。
HMVC 结构
默认结构
默认情况下,存在 Codeigniter4-HMVC 的结构。
app
\Modules
\{YourModule}
\Config
Routes.php
\Controllers
BaseController.php
{YourController}.php
\Models
{YourModel}.php
\Views
\template
{YourTemplate}.php
\{your view module folder}
{Your View}.php
...
\tests
\unit
...
\integration
\Modules
\{YourModule}
{YourController}.php
...
自定义结构
您可以根据自己的需求自由地构建模块,因为 CodeIgniter4 使用 PSR4。如果您想更改 Config 模块文件夹中的 Routes.php 结构或模块控制器的结构,您必须更改 app/Config/Routes.php 中的 HMVC 路由部分以及 app/Commands 文件夹中的 RouteUpdate.php & Module.php。
贡献
您可以通过分叉此存储库来扩展 CodeIgniter4 功能或添加用于开发使用的命令提示符。之后,您可以发起拉取请求。