国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用04:服务层Service使用

InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http://initphp.com

Service层说明

1. Service来源

Service层的设计来源于Java。Java有很多优秀的设计思想,但是很多东西并不一定适合php,因为两种语言的性质不一样。

Service层是业务逻辑层,一般情况下你可以理解为MVC中的Model层,只是传统的Model层有数据库操作,而Service层只专注于业务处理。


2. 简单说明

  1.     如果你的项目要采用InitPHP的分层体系方式,那么Service这一业务逻辑层是必须的,而且是应用程序核心的部分。
  2. 如果采用MVC模式,那么可以放弃此层应用,直接在Controller调用Dao层就可以了。
  3.   Service层是介于Controller和Dao中间层,主要的职责是处理业务的逻辑,封装成Controller可以通用调用的服务接口。例如:用户注册接口,userRegister()
  4.  因为各种项目和开发的不同,Service层在Mvc的时候不需要存在,所以InitPHP框架内置的Service API只有两个接口,也是Service比较常用的两个接口。
  5.  所有的Service需要继承InitPHP框架提供的框架基类Service
  6. 建议使用Zend Studio工具开发,有代码提示功能,能将所有的API提示显示,方便您的开发速度

Service层使用

1. 应用配置

在配置文件中,添加Service的配置信息。Service的配置非常简单,就只要配置Service类名称和文件名称的后缀名,以及Service存放的路径就OK了。

/**
 * Service配置参数
 * 1. 你可以配置service的路径和文件(类名称)的后缀名
 * 2. 一般情况下您不需要改动此配置
 */
$InitPHP_conf['service']['service_postfix']  = 'Service'; //后缀
$InitPHP_conf['service']['path'] = 'library/service/'; //service路径

2. 创建一个TestService.php

在library/service/文件夹下创建/user/TestService.php类。

TestService:

<?php
/**
 * 创建一个测试的Service
 * @author zhuli
 */
class TestService extends Service {
	
	public function getVal() {
		echo "<h1>This is TestService</h1>";
	}
}

3. 控制器中调用Service

在Controller中通过InitPHP::getService方法调用Service,该方法实例化了TestService类并且是单例。

<?php
/**
 * 入口Controller
 * @author zhuli.zhul
 *
 */
class indexController extends Controller {
	
	public $initphp_list = array("get"); //Action白名单
	
	public function before() {
		echo "before<br/>";
	}
	
	public function after() {
		echo "after<br/>";
	}
	
	/**
	 * 入口
	 */
	public function run() {
		$this->getTestService()->getVal(); //调用TestService中的getVal方法
		$this->view->display("hello"); //调用hello.htm模板,后缀名.htm不需要填写
	}
	
	/**
	 * get方法
	 */
	public function get() {
		echo "THIS IS GET<br/>";
	}
	
	/**
	 * 调用TestService
	 * @return TestService
	 */
	public function getTestService() {
		return InitPHP::getService("Test", "user");
	}
}
  1. InitPHP框架提供了一个InitPHP::getService() 全局API函数,可以直接单例-实例化Service
  2. 接口有两个参数,第一个参数是Service的类名称,不需要带后缀'Service';第二个参数是文件夹路径,默认Service都是放在    lib/service/文件夹下的,也会碰到项目比较庞大,将Service类进行分类,比如分成User的类,那么文件夹目录    lib/service/user/
  3. InitPHP::getService和InitPHP::getDao两个接口的用法类似。全局都可以使用。如果用户采用MVC模式,直接在Controller中直接导入Dao即可。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
负载均衡是指将网络流量分发到多个服务器上,以实现请求的均衡处理。负载均衡可以分为L3、L4和L7三种类型。 L3负载均衡主要工作在网络层,使用IP地址和端口号等信息进行负载均衡。L3负载均衡器可以根据源IP地址或目标IP地址进行请求转发,以实现流量的分发和负载均衡。L3负载均衡器的优点是速度快,但无法对请求进行深入的内容分析和处理。 L4负载均衡工作在传输层,主要用于TCP和UDP协议的负载均衡。L4负载均衡器可以基于端口号将请求分发到不同的服务器,以实现负载均衡。常见的L4负载均衡器包括LVS和nginx。L4负载均衡器具有较好的性能和灵活性,但仅能通过端口号进行负载均衡,无法对请求的内容进行处理。 L7负载均衡工作在应用层,可以对请求的内容进行深入的分析和处理。L7负载均衡器可以根据请求的URL、HTTP头部等信息将请求分发到不同的服务器。L7负载均衡器具有较的灵活性和功能,但由于需要对请求进行深入的处理,性能相对较低。常见的L7负载均衡器包括nginx和HAProxy等。 综上所述,负载均衡可以分为L3、L4和L7三种类型,每种类型都有不同的特点和适用场景。选择合适的负载均衡器取决于具体的需求和应用场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [转载和积累系列 - L4负载均衡的设计与实现](https://blog.csdn.net/initphp/article/details/107927807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值