如何让CI框架支持service层_PHP
CI框架
大家知道CodeIgniter框架式MVC分层的,通常大家把业务逻辑写到Controller中,而Model只负责和数据库打交道。
但是随着业务越来越复杂,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
代码如下:
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文件:
代码如下:
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 = NULL, $object_name = NULL)
{
if(is_array($service))
{
foreach($service as $class)
{
$this->service($class, $params);
}
return;
}
if($service == '' or isset($this->_ci_services[$service])) {
return FALSE;
}
if(! is_null($params) && ! is_array($params)) {
$params = NULL;
}
$subdir = '';
// Is the service in a sub-folder? If so, parse out the filename and path.
if (($last_slash = strrpos($service, '/')) !== FALSE)
{
// The path is in front of the last slash
$subdir = substr($service, 0, $last_slash + 1);
// And the service name behind it
$service = substr($service, $last_slash + 1);
}
foreach($this->_ci_service_paths as $path)
{
$filepath = $path .'service/'.$subdir.$service.'.php';
if ( ! file_exists($filepath))
{
continue;
}
include_once($filepath);
$service = strtolower($service);
if (empty($object_name))
{
$object_name = $service;
}
$service = ucfirst($service);
$CI = &get_instance();
if($params !== NULL)
{
$CI->$object_name = new $service($params);
}
else
{
$CI->$object_name = new $service();
}
$this->_ci_services[] = $object_name;
return;
}
}
}
(3)简单例子实现:
控制器中调用service :
代码如下:
class User extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->service('user_service');
}
public function login()
{
$name = 'phpddt.com';
$psw = 'password';
print_r($this->user_service->login($name, $psw));
}
}
service中调用model :
代码如下:
class User_service extends MY_Service
{
public function __construct()
{
parent::__construct();
$this->load->model('user_model');
}
public function login($name, $password)
{
$user = $this->user_model->get_user_by_where($name, $password);
//.....
//.....
//.....
return $user;
}
}
model中你只跟db打交道:
代码如下:
class User_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function get_user_by_where($name, $password)
{
//$this->db
//......
//......
return array('id' => 1, 'name' => 'mckee');
}
}
基本实现思路就是这样的。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Avec le développement de la technologie réseau, PHP est devenu l’un des outils importants pour le développement Web. L'un des frameworks PHP les plus populaires - CodeIgniter (ci-après dénommé CI) a également reçu de plus en plus d'attention et d'utilisation. Aujourd'hui, nous allons voir comment utiliser le framework CI. 1. Installez le framework CI Tout d'abord, nous devons télécharger le framework CI et l'installer. Téléchargez la dernière version du package compressé du framework CI sur le site officiel de CI (https://codeigniter.com/). Une fois le téléchargement terminé, décompressez

PHP est un langage de programmation populaire largement utilisé dans le développement Web. Le framework CI (CodeIgniter) est l'un des frameworks les plus populaires de PHP. Il fournit un ensemble complet d'outils et de bibliothèques de fonctions prêts à l'emploi, ainsi que certains modèles de conception populaires, permettant aux développeurs de développer des applications Web plus efficacement. Cet article présentera les étapes et méthodes de base du développement d'applications PHP à l'aide du framework CI. Comprendre les concepts et les structures de base du cadre CI. Avant d'utiliser le cadre CI, nous devons comprendre certains concepts et structures de base. Vers le bas

PHP est un langage de script côté serveur largement utilisé, et CodeIgniter4 (CI4) est un framework PHP populaire qui offre un moyen rapide et excellent de créer des applications Web. Dans cet article, nous vous apprendrons à utiliser le framework CI4 pour développer des applications Web exceptionnelles en vous expliquant comment l'utiliser. 1. Téléchargez et installez CI4. Vous devez d'abord le télécharger depuis le site officiel (https://codeigniter.com/downloa

Avec le développement d'Internet et son intégration continue dans la vie des gens, le développement d'applications réseau est devenu de plus en plus important. En tant que langage de programmation bien connu, PHP est devenu l’un des langages privilégiés pour développer des applications Internet. Les développeurs peuvent utiliser de nombreux frameworks PHP pour simplifier le processus de développement, l'un des plus populaires étant le framework CodeIgniter (CI). CI est un puissant framework d'application Web PHP. Il présente les caractéristiques de légèreté, de facilité d'utilisation, de performances optimisées, etc., permettant aux développeurs de créer rapidement.

Les étapes pour introduire les styles CSS dans le framework CI sont les suivantes : 1. Préparez les fichiers CSS ; 2. Stockez les fichiers CSS à l'emplacement approprié du projet de framework CI 3. Dans les pages qui doivent utiliser les styles CSS, introduisez CSS ; via le fichier de balise HTML <link> ; 4. Utilisez la classe CSS ou le nom de l'ID dans l'élément HTML pour appliquer le style correspondant.

Tutoriel : étapes détaillées pour introduire les styles CSS dans le framework CI, des exemples de code spécifiques sont requis Introduction : le style est un élément crucial du développement d'applications Web. Utilisez CSS (Cascading Style Sheets) pour embellir les pages Web et offrir une meilleure expérience utilisateur. Lors du développement à l'aide du framework CodeIgniter (CI), la manière d'introduire correctement les styles CSS est particulièrement importante. Cet article présentera les étapes détaillées de l'introduction des styles CSS dans le framework CI et vous fournira des exemples de code spécifiques. Étape 1 : Créez d’abord un fichier CSS,

Les étapes d'introduction des styles CSS dans le framework CI nécessitent des exemples de code spécifiques. Le framework CI (CodeIgniter) est un framework de développement PHP populaire qui est largement utilisé pour créer des applications Web efficaces. Lors du développement d’applications Web, une belle interface utilisateur est une considération importante. L'utilisation de styles CSS peut optimiser et personnaliser l'interface de l'application Web, offrant ainsi aux utilisateurs une meilleure expérience. Dans un framework CI, l'introduction des styles CSS nécessite généralement les étapes suivantes, accompagnées d'exemples de code spécifiques. étape 1:

PHP est un langage de développement Web très populaire et CodeIgniter (CI) est un framework PHP très populaire. CodeIgniter fournit de nombreuses fonctions et fonctionnalités utiles, apportant une grande commodité aux développeurs. Dans cet article, nous explorerons comment utiliser le framework CI6. Installation de CI6 Avant de pouvoir commencer à utiliser CI6, vous devez d'abord terminer le processus d'installation. Vous devez d'abord télécharger le package compressé CI6 depuis le site officiel de CodeIgniter. Ensuite, décompressez ce fichier et placez-le dans
