“模区块开发”
本节提供了使用现代 PHP 实践、设计模式和最佳实践开发 XOOPS 模区块的综合文档。
XOOPS 模区块开发多年来取得了显着的发展。现代模区块利用:
- MVC 架构 - 清晰的关注点分离
- PHP 8.x 功能 - 类型声明、属性、命名参数
- 设计模式 - 存储库,DTO,服务层模式
- 测试 - PHPUnit 具有现代测试实践
- XMF 框架 - XOOPS 模区块框架实用程序
步骤-by-step从头开始构建XOOPS模区块的指南。
- Tutorials/Hello-World-Module - 您的第一个XOOPS模区块
- Tutorials/Building-a-CRUD-Module - 完整的创建、读取、更新、删除功能
现代XOOPS模区块开发中使用的架构模式。
- 模式/MVC-Pattern - 模型-View-Controller架构
- Patterns/Repository-Pattern - 数据访问抽象
- Patterns/DTO-Pattern - 用于干净数据流的数据传输对象
编写可维护的高-quality代码的指南。
- Best-Practices/Clean-Code - XOOPS 的整洁代码原则
- Best-Practices/Code-Smells - 常见反-patterns以及如何修复它们
- Best-Practices/Testing - PHPUnit 测试策略
Real-world模区块分析及实现实例。
- 发布者-Module-Analysis - 深入了解发布者模区块
模区块目录结构
Section titled “模区块目录结构”-organizedXOOPS模区块遵循以下目录结构:
/modules/mymodule/ /admin/ admin_header.php admin_footer.php index.php menu.php /assets/ /css/ /js/ /images/ /blocks/ myblock.php /class/ /Controller/ /Entity/ /Repository/ /Service/ /include/ common.php install.php uninstall.php update.php /language/ /english/ admin.php main.php modinfo.php /preloads/ core.php /sql/ mysql.sql /templates/ /admin/ /blocks/ main_index.tpl /test/ bootstrap.php /Unit/ /Integration/ index.php xoops_version.php关键文件解释
Section titled “关键文件解释”XOOPS_version.php
Section titled “XOOPS_version.php”模区块定义文件告诉 XOOPS 关于你的模区块的信息:
<?php$modversion = [];
// Basic Information$modversion['name'] = 'My Module';$modversion['version'] = 1.00;$modversion['description'] = 'A sample XOOPS module';$modversion['author'] = 'Your Name';$modversion['credits'] = 'Your Team';$modversion['license'] = 'GPL 2.0 or later';$modversion['dirname'] = 'mymodule';$modversion['image'] = 'assets/images/logo.png';
// Module Flags$modversion['hasMain'] = 1; // Has frontend pages$modversion['hasAdmin'] = 1; // Has admin section$modversion['system_menu'] = 1; // Show in admin menu
// Admin Configuration$modversion['adminindex'] = 'admin/index.php';$modversion['adminmenu'] = 'admin/menu.php';
// Database$modversion['sqlfile']['mysql'] = 'sql/mysql.sql';$modversion['tables'] = [ 'mymodule_items', 'mymodule_categories',];
// Templates$modversion['templates'][] = [ 'file' => 'mymodule_index.tpl', 'description' => 'Index page template',];
// Blocks$modversion['blocks'][] = [ 'file' => 'myblock.php', 'name' => 'My Block', 'description' => 'Displays recent items', 'show_func' => 'mymodule_block_show', 'edit_func' => 'mymodule_block_edit', 'template' => 'mymodule_block.tpl',];
// Module Preferences$modversion['config'][] = [ 'name' => 'items_per_page', 'title' => '_MI_MYMODULE_ITEMS_PER_PAGE', 'description' => '_MI_MYMODULE_ITEMS_PER_PAGE_DESC', 'formtype' => 'textbox', 'valuetype' => 'int', 'default' => 10,];通用包含文件
Section titled “通用包含文件”为您的模区块创建一个通用引导程序文件:
<?phpif (!defined('XOOPS_ROOT_PATH')) { die('XOOPS root path not defined');}
// Module constantsdefine('MYMODULE_DIRNAME', 'mymodule');define('MYMODULE_PATH', XOOPS_ROOT_PATH . '/modules/' . MYMODULE_DIRNAME);define('MYMODULE_URL', XOOPS_URL . '/modules/' . MYMODULE_DIRNAME);
// Autoload classesrequire_once MYMODULE_PATH . '/class/autoload.php';PHP 版本要求
Section titled “PHP 版本要求”现代XOOPS模区块应以PHP8.0或更高版本为目标,以利用:
- 建筑商房产促销
- 命名参数
- 联合类型
- 匹配表达式
- 属性
- 空安全运算符
- 从Tutorials/Hello-World-Module教程开始
- 进展到Tutorials/Building-a-CRUD-Module
- 研究 Patterns/MVC-Pattern 以获得架构指导
- 在整个过程中应用Best-Practices/Clean-Code实践
- 从一开始就实施Best-Practices/Testing
- ../05-XMF-Framework/XMF-Framework - XOOPS 模区块框架实用程序
- 数据库-Operations - 使用XOOPS数据库
- ../04-API-Reference/Template/Template-System - Smarty XOOPS 中的模板
- ../02-Core-Concepts/Security/Security-Best-Practices - 保护您的模区块
| 版本 | 日期 | 变化 |
|---|---|---|
| 1.0 | 2025-01-28 | 初始文档 |