前言

当然从我们熟悉(但不完全熟悉)的 MVC 说起。简(zhi)单(jie)的描述.

1. MVC 概览

1.1. URL 规则

上篇 目录说明中 提到的,这里不多说 规则就是这样,后面来说其源码

1.2. Controller && Action

src/Index/IndexController.php > function dbOperation() {}

use Zan\Framework\Foundation\Domain\HttpController as Controller;

use Com\JeRuen\HttpDemo\Model\Index\GetDBData;

class IndexController extends Controller

{

//操作数据库示例

public function dbOperation()

{

$demo = new GetDBData();

$result = (yield $demo->doSql());

yield $this->r(0, 'json string', $result);

}

}

1.3. Model

从上的 namespace 得知 Model src/Model/Index/GetDBData

Controller 中 获取 一个 Model $demo

$demo->doSql() 获取相关数据

当然 这里 的 GetDBData 只是一个演示,正常来说 应该是个 User 、 Shop 等等啥的

同样 doSql() 也是演示而已, 想成 getAllUser(), getBoy() 啥的。

下面 是 Model 中的 具体 逻辑了。

这里 youzan 采用的是 SqlMap的 方式。至于为什么。看官网说明吧。

当然这个 SqlMap 不是那个传说中的 Sql注入工具

namespace Com\JeRuen\HttpDemo\Model\Index;

use Zan\Framework\Store\Facade\Db;

class GetDBData

{

public function doSql()

{

$data = [

'limit' => 2

];

//demo.demo_sql_id1_1对应resource/sql/demo.php中的配置

yield Db::execute("demo.demo_sql_id1_1", $data);

}

}

// 参见sqlmap文档

return [

'demo_sql_id1_1' => [

'table' => "TABLES",

'sql' => "

SELECT * FROM TABLES

#LIMIT#

",

],

];

1.4. View

JSON View

上面介绍 Model 时候 yield $this->r(0, 'json string', $result);

返回的 json ‘View’

Template View

public function showTpl()

{

// -> src/Demo/View/Test/test.html

$this->assign("str", "Zan Framework"); //给模板中的变量赋值

yield $this->display("Demo/test/test"); //输出模板页面

}

2. MVC 相关配置

2.1 路由配置

return [

'default_route' => '/index', // 默认 module 对应 src/Index目录

'default_controller' => 'index', // 默认 controller 对应 src/Index/IndexController

'default_action' => 'index', // 默认 action 对应 IndexController 中的 action 方法

'default_format' => 'html', // 响应 content-type

// 'router_class' => '/namespace/router_class', // 自定义路由

];

2.2 session 启用

resource/config/test/server.php

return [

// other config

'session' => [

'run' => true, // true 启用 session

'store_key' => 'demo.session.session',

],

];

3. 源码剖析

想了想下 还是 后面再说吧, 继续吊胃口

相关资料

zan php demo,zanphp源码解读 - MVC说起相关推荐

  1. zan php demo,zanphp源码解读 - 环境安装

    前言 因为本系列主要解读zanphp源码, 所以环境采用作者自己搭建的适用 zan 系列的 docker 环境. 环境相关说明 本系列基础目录都在 ~/zan-code 目录下进行 如有变更 自行 切 ...

  2. zan php demo,zanphp源码解读 - 应用的启动

    获取应用并启动 php bin/httpd #!/usr/bin/env php /** @var \Zan\Framework\Foundation\Application $app */ $app ...

  3. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

  4. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

  5. php yii框架源码,yii 源码解读

    date: 2017-11-21 18:15:18 title: yii 源码解读 本篇博客阅读指南: php & 代码提示: 工欲善其事必先利其器 yii 源码阅读指南: 整体上全貌上进行了 ...

  6. Slim 框架源码解读

    0x00 前言 Slim 是由<PHP The Right Way>作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim ...

  7. SnapKit 源码解读(一):Extensions

    前言 iOS 开发中的布局方式,总体而言经过了三个时代.混沌初开之时,世间只有3.5英寸(iPhone 4.iPhone 4S),那个时候屏幕适配对于大多数 iOS 开发者来说并不是什么难题,用 fr ...

  8. Amigo 源码解读

    Amigo 源码解读 现在 hotfix 框架有很多,原理大同小异,基本上是基于qq空间这篇文章 或者微信的方案.可惜的是微信的 Tinker 以及 QZone 都没有将其具体实现开源出来,只是在文章 ...

  9. BaseRecyclerViewAdapterHelper源码解读(四) 上拉加载更多

    上拉加载 上拉加载无需监听滑动事件,可自定义加载布局,显示异常提示,自定义异常提示. 此篇文章为BaseRecyclerViewAdapterHelper源码解读第四篇,开源库地址,如果没有看过之前3 ...

最新文章

  1. 创建一个栈存储结构,并且写入一些对栈的基本的操作
  2. spring applicationContext.xml最全约束
  3. linux 基本的操作
  4. 为什么人们默认 x86 代表 32 位处理器
  5. 【HDU - 1166】敌兵布阵 (线段树模板 单点更新+ 区间查询)
  6. java递归分苹果_递归较难题——分苹果问题
  7. PHP收费事件导致用户流失,PHP秒杀系统方案(解决大流量,高并发)
  8. 【多题合集】【loliの模拟赛】排列组合大套餐
  9. kmeans不足举例(code)
  10. 高效的css命名约定
  11. [文档].Altera - Nios II Flash Programmer用户指南
  12. Docker 和 Kubernetes了解一下
  13. SharePoint 读取选项字段所有Choise
  14. Fabric CA的基础知识
  15. k8s:worke节点启动后,node处于NotReady状态
  16. 【lepus】开源数据库监控rhel8.4安装教程(包含开机脚本)
  17. 图元变形lisp源码_收集和整理的lisp源码 收集整理出来的lisp源代码 - 下载 - 搜珍网...
  18. uni-app 小程序 微信订阅消息通知
  19. mysql大于号小于号写法
  20. 项目经理如何提升核心竞争力,给自己增值

热门文章

  1. ML—F值与特征选择
  2. 未来5年最赚钱行业 创业10大绝佳项目
  3. axiom OMElement.setText()转义问题
  4. mysql aes_decrypt_MySQL如何使用AES_ENCRYPT()与AES_DECRYPT()进行加解密的示例
  5. 心肌炎康复过程的心得分享
  6. 程序员成长历程的四个阶段
  7. STM32CubeMx 学习(4)PWM 实验
  8. PMP考试计算题汇总
  9. 读文件时出现这个错误 'utf-8' codec can't decode byte 0xba in position 21: invalid start byte...
  10. (毕业设计资料)基于51单片机的音乐喷泉设计