Opérations de base du projet ThinkPHP6 (9. couches d'architecture)

1. Signification hiérarchique

Signification Je pense que le plus important est 方便维护que si le code n'est pas en couches, il est écrit dans le contrôleur, y compris la vérification de divers paramètres, divers jugements de scénario et diverses requêtes de données retournent des résultats différents, ce qui est très déroutant et il est difficile d'avoir des problèmes. Le positionnement et la modification des exigences est un casse-tête, et une bonne architecture en couches peut résoudre les problèmes.

Deuxièmement, l'architecture du code

Insérez la description de l'image ici
Ici, j'ai emprunté une photo d'un enseignant à un réseau de cours, et je l'ai redessinée. Nous avons divisé le code en 5 modules ci-dessus. Leurs fonctions sont:

Module effet
Manette Responsable de l'appel de la couche métier et du renvoi des données d'assemblage à la couche de vue ou à l'interface API
Couche de logique métier Responsable de l'appel des bibliothèques tierces ou de la couche de modèle pour obtenir des données
Bibliothèque de base lib Bibliothèques chargées d'encapsuler des fonctions spécifiques ou de référencer des bibliothèques tierces
Modèle de couche modèle Responsable de la connexion à la base de données pour renvoyer les données
Afficher la vue des couches Responsable du retour des données au premier plan

Conception à trois couches communes

Certains modules sont communs à plusieurs applications, vous pouvez donc créer un commonrépertoire pour stocker tous les fichiers communs des applications, commonet le répertoire est au même niveau que les autres répertoires d'application. Tels que business, lib, model, etc.

注意:修改文件目录,记得修改文件命名空间和引用该文件的地方。
Insérez la description de l'image ici
Étant donné que vous devrez peut-être redisattendre les données d'opération plus tard , voici donc la modelsuperposition.

Quatre, code de pratique

Modèle:

<?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();
    }
}

Affaires:

<?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;
    }
}

manette:

<?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);
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/zy1281539626/article/details/110411390
conseillé
Classement