起步:MVC模式


ThinkPHP6 起步

  • ThinkPHP支援傳統的MVC(Model-View-Controller)模式以及流行的MVVM(Model-View-ViewModel)模式的應用開發

一、MVC

  • #MVC 軟體系統分為三個基本部分:模型(Model )、視圖(View)和控制器(Controller

  • #ThinkPHP 是典型的MVC 架構

控制器- 負責轉送請求,對請求進行處理。

視圖 - 介面設計人員進行圖形介面設計。

模型 - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。

mvc.gif

二、單一應用模式存取

  • #專案存取路徑:www.xxx.com/index.php/ index/index

index.php 入口檔案

index 控制器

index 作業

##├─app           應用目錄

│  ├─controller      控制器目錄

│  ├─model           模式目錄

│  ├─common.php         公用函數檔案

│  └─event.php        

│  ├─app.php            應用程式設定

│  ├─cache.php         ├ ─cookie.php         Cookie設定

│  ├─database.php       資料庫設定

│  ├─語言配置

│  ├─log.php            日誌設定

│  ├─middleware.php     中間件設定#│  ├─session.php        Session設定

│  ├─trace.php          Trace設定

##│1# └─view.php# ├─view            視圖目錄

#├─route                 路由定義目錄

│  ├─route.php          路由定義檔

│  └─ ...

#│

├─public 

│  ├─index.php          入口檔案

│  ├─router.php         快速測驗檔案 

├─extend                擴充類別庫目錄

├─runtime            1 er類別庫目錄

├─.example.env          環境變數範例檔案

├─composer.json         composer 定義檔案

#├#LICENSE. .md             README 檔案

#├─think                 命令列入口檔案編號


##檢查視圖\View類別

配合視圖驅動程式(也即模板引擎驅動)類別一起完成,新版僅內建了PHP原生模板引擎(主要用於內建的異常頁面輸出),如果需要使用其它的模板引擎需要單獨安裝相應的模板引擎擴充

ThinkPHP6已獨立出一套模版,命名為:ThinkTemplate模板引擎;

使用think-template模板引擎,需安裝think-view;

composer require topthink/think-view

#檢視目錄可以在根目錄,也可以在app應用目錄

  • #四、模版渲染

  • 要使用View,必須先引入

    think\facade\View

    門面類別

fetch 方法渲染頁面

參數:靜態頁面的路徑,預設對應的靜態頁面

controller程式碼

##<?php

namespace app\controller;

###use think\facade\View;######class Index{######    public function index() {######        return View::fetch();######    }#####}#########view程式碼######備:Index類別對應view下面的目錄######備:index方法對應view下面的目錄裡的靜態檔案#######五、模版變數############assign 方法賦值屬於全域變數賦值############模版輸出{$name}#############controller程式碼########namespace app\controller;# #####use think\facade\View;######class Index{######    public function index(){######        // 範本變數賦值###

        View::assign('name','歐陽克');

        View::assign('email','oyk@php.cn');

        //或批量賦值

        View::assign([

#            'name'  => '歐陽克',

##   . '

        ]);

        // 範本輸出

        return View::fetch();

  #  }

##o

  }

C##C

#view程式碼

<!DOCTYPE html>

<html>

#<head>

<meta charset="UTF-8">

    <title>ThinkPHP6</title>

</head>

<body>

##</head>

<

#    姓名:{$name}
    ##    <br>
  •     信箱:{$email}

  • #</body>
  • #< ;/html>

    六、入口
  • public目錄為唯一的web可存取目錄

12870f3d5e20e2e356baf864a59c6ee.png把資源檔案放到

public/static

  • 入口文件,預設為index.php

七、範例

把html頁面放到ThinkPHP框架裡

此頁面是靜態檔案

<!DOCTYPE html>

<html>

<head>

    <title>清單頁面< /title>

    <link rel="stylesheet" type="text/css" href="layui/css/layui.css">

#    <script type="text /javascript" src="layui/layui.js"></script>

    <style type="text/css">

#        .header{width:100%

        .header{width:100% ;height: 50px;line-height: 50px;background: #2e6da4;color:#ffffff;}

        .title{margin-left: 20px;font-size: 20px;}

## .userinfo{float: right;margin-right: 10px;}

        .userinfo a{color:#ffffff;}

      .menu{width: 200px37:      .menu{width: 200px37:403; absolute;}######        .main{position: absolute;left:200px;right:0px;}###############       .layui-###########     ######        .layui-colla-item{border-top:none;}######        .layui-colla-title{background:#42485b;color:#ffffffffff;

        .layui-colla-content{border-top:none;padding:0px;}


        .content span{背景: #0096888;margin-left: 30px ;padding: 10px;color:#ffffff;}

        .content div{border-bottom: Solid 2px #009688;margin-top: 8px;}## ##      按鈕 . ;頁邊距:-5px;}

   

#

   

;

        XXX--後台管理系統

        ;【歐陽克】< span><a href="javascript:;">退出</a></span></span>

    </div>

   

namespace app\controller;

use think\facade\View;

class Index{

    public function index(){

        $title = '商城';

## $login = '歐陽克';

        $left = [

            [

         'lists ' => [

                    [

                         'title' => '商品清單',

                    ] ,

                    [

                       'title' => '商品分類',

                    ]

                ]

            ],

                           'lists' => [

                    [

                       'title' => '使用者清單',

                                    ],

                   時中使用

                        'title' => '購物車',

                  ] ,

                    [

                       'title' => '使用者地址',

                    ],

                    [

                         'title' => '訂單管理',

##                    ]

#               時 ]##         

##            ],

##            [

             => [

[

                        'id' => 7,

                       ],

                    [

                        'id' => 8,

##                       ],

                    [

# 'id' => 9,

                        'title' => '左側選單列',

# #  #      ]

            ]

        ];

        $right = [

     

                ' title' => '熙世界2019秋冬新長袖杏色上衣連帽寬鬆刺繡文藝落肩袖加厚衛衣BF風',

                'cat' => '女裝',

#                'price' => 189,

                'discount' => 6,##          'discount, #                // 'status' => '開啟',

                'add_time' => '2019-12-12',

 ],

            [

卷撞色羊毛大衣外套女',

                'cat' => '女裝',

##             > 7,

                'status' => 1,

                // 'status' => '開啟和開啟9-12-12 ',

                // 'add_time' => '1576080000'

               'id' => 3,

                'title' => '微彈中高腰直腳牛仔褲男',

               'cat' =&li; ; 179,

                'discount' => 8,

                'status' =>

                // 'status' => '關閉',

                'add_time' => '2019-12-12,     'add_time' => '2019-12-12,# ' => ' 1576080000'

            ],

            [

         'title' => '男士長袖t卹秋季圓領黑白卹T 純色上衣服打底衫',

                'cat' => '男裝',

##            ' discount' => 9,

                'status' => 1,

             1 // 'stat#           _time' => ; '2019-12-12',

                // 'add_time' => '1576080000'

   View: :assign([

            'title'  => $title,

            'login' =>

##            'right' => $right

        ]);

        return 對::

view程式碼,控制器資料在視圖中使用

<!DOCTYPE html>

<html>

## <head>

    <title>{$title}--後台管理系統</title>

    <link rel="stylesheet" type="text/css" href ="/static/layui/css/layui.css">

    <script type="text/javascript" src="/static/layui/layui.js"></script>

    <style type="text/css">

        .header{width:100%;height: 50px;line-height: 50px;background: #2e6da4;color: #2e6da4; ffffff;}

        .title{margin-left: 20px;font-size: 20px;}

###        .userinfo{float:right;margin-right:#10px; #        .userinfo a{color:#ffffff;}###

        .menu{寬度: 200px;背景:#333744;位置:絕對;}

        .main{位置: 絕對;左:200px;右:0px;}


##        .layui-collapse{border: none;}

        .layui-colla-item{border-top:none;}

#   lay   lay 背景:#42485b;顏色:#ffffff;}

        .layui-colla-content{border-top:none;padding:0px;}


.content span{背景:#009688;margin-left: 30px;padding: 10px;color:#ffffff;}

        .content div{border-bottom:solid 2px #00968 }

        .content 按鈕{float: right;margin-top: -5px;}

   

##   

<身體>