Operaciones básicas del proyecto ThinkPHP6 (9. Arquitectura en capas)

1. Significado jerárquico

Importancia Creo que lo más importante es 方便维护que si el código no está en capas, está escrito en el controlador, incluida la verificación de varios parámetros, varios juicios de escenarios y varias consultas de datos que devuelven resultados diferentes, lo que es muy confuso y es difícil tener problemas. Colocar y modificar los requisitos es un dolor de cabeza, y una buena arquitectura en capas puede resolver las preocupaciones.

En segundo lugar, la arquitectura del código

Inserte la descripción de la imagen aquí
Aquí tomé prestada una imagen de un maestro de una red de lecciones y la dibujé nuevamente. Dividimos el código en los 5 módulos anteriores. Sus funciones son:

Módulo efecto
Controlador Responsable de llamar a la capa empresarial y devolver los datos de ensamblaje a la capa de vista o la interfaz api
Capa de lógica empresarial Responsable de llamar a bibliotecas de terceros o capa de modelo para obtener datos
Biblioteca básica lib Bibliotecas responsables de encapsular funciones específicas o hacer referencia a bibliotecas de terceros
Modelo de capa de modelo Responsable de conectarse a la base de datos para devolver datos
Ver vista de capa Responsable de devolver los datos al primer plano

Diseño de tres capas comunes

Algunos módulos son comunes a varias aplicaciones, por lo que puede crear un commondirectorio para almacenar todos los archivos comunes de las aplicaciones, commony el directorio está al mismo nivel que otros directorios de aplicaciones. Como negocio, biblioteca, modelo, etc.

注意:修改文件目录,记得修改文件命名空间和引用该文件的地方。
Inserte la descripción de la imagen aquí
Teniendo en cuenta que es posible que deba redisesperar los datos de la operación más tarde , aquí están las modelcapas.

Cuatro, código de práctica

Modelo:

<?php

namespace app\common\model\mysql;
use think\Model;

class Demo extends Model
{
    
    
    public function getDemoDataByCategoryId($cateId, $limit = 10){
    
    
        return $this->where("cate_id", $cateId)->limit($limit)->select()->toArray();
    }
}

Negocio:

<?php

namespace app\common\business;
use app\common\model\mysql\Demo as DemoModel;

class Demo
{
    
    
    public function getDemoDataByCategoryId($cateId, $limit = 10){
    
    
        $model = new DemoModel();
        $results = $model->getDemoDataByCategoryId($cateId, $limit);
        if(empty($results)){
    
    
            return [];
        }
        return $results;
    }
}

controlador:

<?php

namespace app\demo\controller;

use app\BaseController;
use app\common\business\Demo;

class Index extends BaseController
{
    
    
    public function test(){
    
    
        $cateId = $this->request->param("cate_id",0,"intval");
        if(empty($cateId)){
    
    
            return show(config("status.error"), "参数错误");
        }
        $demo = new Demo();
        $results = $demo->getDemoDataByCategoryId($cateId);
        return show(config("status.success"), "ok", $results);
    }
}

Supongo que te gusta

Origin blog.csdn.net/zy1281539626/article/details/110411390
Recomendado
Clasificación