ThinkPHP6プロジェクトの基本操作(9.アーキテクチャの階層化)

1.階層的な意味

重要性最も重要なことは方便维护、コードが階層化されていない場合、さまざまなパラメーター検証、さまざまなシナリオ判断、さまざまなデータクエリが異なる結果を返すなど、コードがコントローラーに書き込まれることです。これは非常に混乱し、問題が発生しにくいことです。要件の配置と変更は頭痛の種であり、優れた階層化アーキテクチャは問題を解決できます。

第二に、コードアーキテクチャ

ここに写真の説明を挿入
ここでは、レッスンネットワークから先生の写真を借りて、もう一度描きました。コードを上記の5つのモジュールに分割しました。機能は次のとおりです。

モジュール 効果
コントローラ ビジネスレイヤーを呼び出し、アセンブリデータをビューレイヤーまたはapiインターフェイスに返す責任があります
ビジネスロジックレイヤー データを取得するためにサードパーティのライブラリまたはモデルレイヤーを呼び出す責任があります
基本ライブラリライブラリ 特定の機能のカプセル化またはサードパーティライブラリの参照を担当するライブラリ
モデルレイヤーモデル データベースに接続してデータを返す責任があります
レイヤービューを表示 データをフォアグラウンドに戻す責任があります

3つの共通レイヤーデザイン

一部のモジュールは複数のアプリケーションに共通であるため、commonすべてのアプリケーションの共通ファイルを格納するディレクトリを作成できます。commonこのディレクトリは、他のアプリケーションディレクトリと同じレベルにあります。ビジネス、ライブラリ、モデルなど。

注意:修改文件目录,记得修改文件命名空间和引用该文件的地方。
ここに写真の説明を挿入
後で操作データをredis待つ必要があるかもしれないことを考慮して、ここにmodel階層化があります。

4、練習コード

モデル:

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

ビジネス:

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

コントローラ:

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

おすすめ

転載: blog.csdn.net/zy1281539626/article/details/110411390