军事仿真CI3框架自定义service层及遇到的问题总结

本文介绍了在军事仿真项目中,如何利用CodeIgniter(CI3)框架自定义Service层来处理复杂的业务逻辑,以解决Controller层过于臃肿的问题。文章探讨了军事部署数据管理的三个核心功能,并阐述了Service层在MVC架构中的作用,强调了业务逻辑和数据访问层的分离,以提高代码的可维护性和复用性。此外,还提到了军事仿真中无人机的发展趋势和技术关键点,如多任务平台、全隐身、自主式等,并讨论了电磁兼容设计和天线布局仿真的重要性。
摘要由CSDN通过智能技术生成

引 言

    作战推演系统可用于军队指挥员和装备操作人员的训练,加深对电子战概念、理论、战法的理解,分析和掌握电子对抗系统的科学运用方法。研究作战推演系统具有非常重要的军事意义和价值。军事仿真CI3框架自定义service层所需要硬核处理的东西更多,也是调度的基础以及AI算法基础。

一、综合系统概述

系统以日、美主要西方对手国家的武器和装备数据作为研究对象,依托我军武器装备数据,以俄罗斯为第三方国家数据为辅助,奠定实验模拟推演的基础,研制基础数据管理软件。主要包括武器装备数据管理、部队编制数据管理、军事部署数据管理等功能。功能管理中需提供美、日、中、俄武器装备等数据信息内容。

二、军事部署数据管理工具要求

应实现对俄、中、日、美的港口、雷达阵地、军事基地、军用机场、指挥所等固定目标的部署数据,以及上述国家航母编队的基本构成、阵位和队形等典型配置数据进行录入、修改、删除等管理维护功能。包括对部署编成数据、部署实体数据和部署数据的管理和展现等功能模块。.

(1)部署编成数据管理功能要求;应实现针对俄、中、日、美的军事部署信息,建立相应的部署编成数据,明确部署位置、分类、隶属关系等,并提供增删改查等管理维护功能。
(2)部署实体数据管理功能要求;应满足对具体军事部署中所包含的军事设施和作战单元进行管理和维护的需求。.
(3)军事部署数据展现功能要求;应主要实现对部署编成数据和部署实体数据的可视化显示、管理和维护。

大家知道CodeIgniter框架式MVC分层的,通常大家把业务逻辑写到Controller中,而Model只负责和数据库打交道。

三、军事仿真CI3框架自定义service层
但是随着业务越来越复杂,controller越来越臃肿,举一个简单的例子,过程可能在多种场景出现,如果这样的代码放controller中则很臃肿难以复用,如果放model会让持久层和业务层耦合。很多人将一些业务逻辑写到model中去了,model中又调其它model,也就是业务层和持久层相互耦合。这是极其不合理的,会让model难以维护,且方法难以复用。

是不是可以考虑在controller和model中加一个业务层service,由它来负责业务逻辑,封装好的调用接口可以被controller复用。

这样各层的任务就明确了:
Model(DAO):数据持久层的工作,对数据库的操作都封装在这。
Service:业务逻辑层,负责业务模块的逻辑应用设计,controller中就可以调用service的接口实现业务逻辑处理,提高了通用的业务逻辑的复用性,设计到具体业务实现会调用Model的接口。
Controller:控制层,负责具体业务流程控制,这里调用service层,将数据返回到视图
View:负责前端页面展示,与Controller紧密联系。

基于上面描述,实现过程:
(1)让CI能够加载service,service目录放在application下,因为CI系统没有service,则在application/core下新建扩展MY_Service.php

<?php


class MY_service
{
   
	public function __construct()
	{
   
		log_message('debug', "Service Class Initialized");
	}
	function __get($key)
	{
   
		$CI = & get_instance();
		return $CI->$key;
	}
}

(2)扩展CI_Loader实现,加载service,在application/core下新建MY_Loader.php文件:

<?php


class MY_Loader extends CI_Loader
{
   
	/**
	 * List of loaded sercices
	 *
	 * @var array
	 * @access protected
	 */
	protected $_ci_services = array();
	/**
	 * List of paths to load sercices from
	 *
	 * @var array
	 * @access protected
	 */
	protected $_ci_service_paths  = array();
	/**
	 * Constructor
	 *
	 * Set the path to the Service files
	 */
	public function __construct()
	{
   
		parent::__construct();
		$this->_ci_service_paths = array(APPPATH);
	}
	/**
	 * Service Loader
	 *
	 * This function lets users load and instantiate classes.
	 * It is designed to be called from a user's app controllers.
	 *
	 * @param string the name of the class
	 * @param mixed the optional parameters
	 * @param string an optional object name
	 * @return void
	 */
	public function service($service = '', $params = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值