首页 > 编程语言 >php swoft 中的数据分层

php swoft 中的数据分层

时间:2023-04-03 18:35:09浏览次数:30  
标签:return res swoft controller Detail 分层 php 数据 HomeData

 

 

 

 不仅仅局限于 MVC 。将数据在model 这一个层面剖析开,优雅的处理数据  逻辑,缓存,业务,数据库操作的烦恼。

 

这个思路也适用于 thinkphp,hyperf,imi 等框架。不再简单的 实现 controller->model->view 的处理过程。

 

 

简化代码,每一层清晰地定义相应处理的数据。

 controller 层面 

复制代码
<?php declare(strict_types=1);
/**
 * This file is part of Swoft.
 *
 * @link     https://swoft.org
 * @document https://swoft.org/docs
 * @contact  [email protected]
 * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
 */

namespace App\Http\Controller;

use Swoft;
use Swoft\Http\Message\ContentType;
use Swoft\Http\Message\Response;
use Swoft\Http\Server\Annotation\Mapping\Controller;
use Swoft\Http\Server\Annotation\Mapping\RequestMapping;
use Swoft\Http\Server\Annotation\Mapping\RequestMethod;
use Swoft\Http\Message\Request;
use Swoft\View\Renderer;
use Throwable;
use function context;

use App\Model\Data\HomeData;

/**
 * Class HomeController
 * @Controller("/Home")
 */
class HomeController
{
    /**
     * @RequestMapping("/Home/HomeTest",method={RequestMethod::GET})
     *
     * @return Response
     */
    public function HomeTest()
    {
        $request = context()->getRequest();

        $HomeData = new HomeData();

        $Detail = $HomeData->DataTest();

        $res = Result(200, '获取成功', $Detail);

        return context()->getResponse()->withData($res);
    }
    
}
复制代码

Data 层中 进行缓存判断,资源调用。

复制代码
<?php declare(strict_types=1);
/**
 * This file is part of Swoft.
 *
 * @link     https://swoft.org
 * @document https://swoft.org/docs
 * @contact  [email protected]
 * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
 */

namespace App\Model\Data;

use App\Model\Dao\HomeDao;
use App\Model\Entity\Home;

use Swoft\Redis\Exception\RedisException;
use Swoft\Redis\Pool;
use Swoft\Redis\Redis;

class HomeData
{
    public function DataTest(){

        $ReductionRedis = Redis::rawCommand('GET', 'FullReduction');

        $ReductionInfo = json_decode($ReductionRedis, true);

        if (empty($ReductionInfo)) {
            $HomeDao = new HomeDao();

            $ReductionInfo = $HomeDao->HomeDaoTest();
        }

        return $ReductionInfo;
    }


}
复制代码

Dao层,返回数据。操作实例。 【Entity】中,就是直接指定数据文件了。

复制代码
<?php declare(strict_types=1);
/**
 * This file is part of Swoft.
 *
 * @link     https://swoft.org
 * @document https://swoft.org/docs
 * @contact  [email protected]
 * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
 */

namespace App\Model\Dao;

use Swoft\Redis\Pool;
use Swoft\Redis\Redis;

use App\Model\Entity\Home;

class HomeDao
{

    public function HomeDaoTest(){

        $Home = new Home();

        $DailyActivity = $Home->DailyActivity();

        return $DailyActivity;
    }




}
复制代码

 

标签:return,res,swoft,controller,Detail,分层,php,数据,HomeData
From: https://www.cnblogs.com/yzl042349/p/17283966.html

相关文章

  • php 扩展 rabbitmq popt
     首先是rabbitmq-c-master.tar.gz包,可以访问https://github.com/alanxz/rabbitmq-c去下载最新的wgethttps://github.com/alanxz/rabbitmq-c.gitwgethttps://github.com/alanxz/rabbitmq-c/archive/v0.10.0.tar.gz  0.8.0这个版本 对popt 要求低一些,如果你遇......
  • swoft 上传图片到 阿里云oss aliyun-oss
     1、swoft 获取上传的文件。官方文档上面没有看到       $files=$request->getUploadedFiles();       $file=$files['file']; 2、在模型文件中引入sdkrequire_once"/home/www/swoft/app/Model/Entity/aliyun-oss/autoload.php";3、引用命名空......
  • php架构之路,phper进阶,学习路线
     鉴于最近跟小伙伴聊了很多PHP架构发展方向的问题,相关技术整理了一下,也顺便规划了一下自己下年。【我的学习路线】一.常用的设计模式以及使用场景    以下是我用到过的  工厂,单例,策略,注册,适配,观察者,原型,装饰器,facade,loc,pipeline二.阅读一个框架源码 例如:laravel......
  • swoft 获取微信零时二维码 并上传阿里云oss aliyun-oss
      1、获取access_token、两个小时门票过期重新获取publicfunctionAccessToken(){$time=time();$key="wx68065208096access_token";$accessData=DB::table('db_wx_token')->where('key',$key)->value(�......
  • swoft 客服系统websocket。即时通讯小功能
     挥手,握手就不解释了。直接上代码启动swoftws的服务  <?phpdeclare(strict_types=1);/***ThisfileispartofSwoft.**@linkhttps://swoft.org*@documenthttps://swoft.org/docs*@[email protected]*@licensehttps://github.co......
  • php 如何实现 git diff
    无意间想到这个问题,如何用php来实现gitdiff,如果实现了这个功能,岂不是能够使用php对在线编辑文件的功能做更进一步的优化和提升?查了一下还真有这样的库,话不多说,开始执行composerrequire--devsebastian/diff得到结果Infofromhttps://repo.packagist.org:#StandW......
  • PHPExcel 中文使用手册详解
     1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848......
  • linux使用php动态安装模块mysqli.so(ext/mysqlnd/mysqlnd.h: 没有那个文件或目录)
     由于我先安装的php,再安装的mysql!正常过程: 1、安装mysql 2、安装phpconfigure时带–with-mysql参数现在我不想重装,因此使用phpize动态安装mysqli,php版本为php-7.2.13 1先查看php下phpize路径  得知路劲为/usr/local/php/bin/phpize2切换到php源码包目录php-7......
  • 如何在PHP7中扩展mysql,先安装php7.2。后安装mysql
     相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated:mysql_connect():Themysqlextensionisdeprecatedandwillberemovedinthefu......
  • 【环境搭建】docker+nginx部署PHP
    目的使用docker容器完成nginx的安装以及部署PHP网页步骤一、安装nginx1.拉取Nginx镜像dockerpullnginx//拉取镜像dockerimages//查看本地镜像这里注意需要记一下nginx的IMAGEID,我这里的ID是605c2.创建Nginx容器dockerrun......