zanphp源碼解讀 - MVC提及

前言

固然從咱們熟悉(但不徹底熟悉)的 MVC 提及。簡(zhi)單(jie)的描述.php

1. MVC 概覽

1.1. URL 規則

上篇 目錄說明中 提到的,這裏很少說 規則就是這樣,後面來講其源碼html

1.2. Controller && Action

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

<?php namespace Com\JeRuen\HttpDemo\Controller\Index;

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注入工具數據庫

<?php

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

// 參見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’json

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 路由配置

resource/config/share/route.php
http://zanphpdoc.zanphp.io/MV...segmentfault

<?php

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.phpsession

<?php

return [
    // other config
    'session' => [
        'run' => true,    // true 啓用 session
        'store_key' => 'demo.session.session',
    ],
];

3. 源碼剖析

想了想下 仍是 後面再說吧, 繼續吊胃口工具

相關資料

數據庫操做
SqlMap
zanPHP-MVCthis

相關文章
相關標籤/搜索