微信小程序電商實戰(一)

一、兩個方面

1、整體的思路與編程思想(大局觀,AOP)–20%
2、具體的編程知識與技巧(TP5、小程序、數據庫等)–80%

二、實現概述

  • ThinkPHP 5(Web框架)
    TP5手冊
    1、編寫業務邏輯(本項目典型的業務邏輯就是訂單的處理和管理)
    2、訪問數據庫
    3、向客戶端提供數據(本項目使用API的方式向客戶端提供數據)
  • MySQL
    1、數據存儲
    2、數據表的設計
    3、與業務緊密結合(注意數據冗餘合理利用)
  • 微信
    1、微信支付
    2、學習與借鑑,學習微信接口設計
  • 小程序(客戶端)
    1、直接與用戶交互
    2、體驗很重要

三、流程與體系

  • 服務端
    ThinkPHP 5+MySQL構建REST API
  • 客戶端
    向服務器請求數據,完成自身行爲邏輯
  • CMS
    向服務器請求數據,實現發貨與發送微信消息
  • 客戶端與CMS
    客戶端是給用戶使用的,CMS是給產品管理人員、運營人員使用的,通常情況下,CMS主要是對數據的增刪改查,比客戶端的業務邏輯簡單
  • CMS的功能
    1、基礎數據的增刪改查,比如添加商品、刪除商品類目
    2、特殊操作,比如實現發送微信消息
  • 注意
    傳統情況是將服務器和CMS混在一起,可複用想差。而本項目採用三端分離(服務端、客戶端、CMS),CMS看作是客戶端的一種

四、項目特點

1、我們想構建一個通用的、適合互聯網公司的、有良好結構的產品
2、三端分離(客戶端、服務端與數據管理端分離)
3、基於REST API
4、基於Token令牌管理權限(對用戶分級,進行身份認證和權限管理)
5、一套架構適配ios、Android、小程序與單頁面
6、真正理解MVC
7、AOP面向切面編程思想在真實項目中的應用
8、使用ORM的方式與數據庫交互
9、MySQL數據表設計與數據冗餘的合理利用
10、用面向對象的思維構建前段代碼(ES6 Class&Module)

五、技術

TP5

  • Web框架三大核心知識(路由、控制器與模型)
    路由定義API接口
    控制器編寫具體業務邏輯的入口,調用Model層實現業務邏輯,Model層寫業務邏輯
    模型設計數據庫交互(ORM)
  • 驗證器、讀取器、緩存與全局異常處理
  • ORM:模型與關聯模型
    將一張表看作一個對象,如果是單表操作,這個概念沒有啥大的優越性,如果是關聯表,則將複雜的關聯關係抽象爲對象與對象之間的關聯

微信

MySQL

  • 數據表的設計
  • 數據冗餘合理利用
  • 事務與所在訂單(庫存量)檢測中的應用
    併發訪問數據庫

六、擴展:理解Web與前端

1.泛化的Web(具有公共API)。網站不是Web的全部,只是Web的一小部分
在這裏插入圖片描述
2.能寫出代碼和寫出易維護的代碼不是一回事兒
3.前端絕不等於做界面和特效,前端與服務器在編程思維上的差距已經越來越小
4.前端已經變得和服務器一樣需要處理大量的業務邏輯

七、TP5層次結構

在這裏插入圖片描述
入口文件(位於public目錄下的index.php)–>應用–>模塊(每個模塊包含完整的MVC三層)

八、PATH_INFO URL路徑模式解析

在這裏插入圖片描述
在這裏插入圖片描述

九、配置虛擬域名簡化URL路徑

域名簡化,以入口文件前後分爲前後兩部分。前半部分用虛擬域名z.cn,步驟如下:
1、讓apache認識z.cn
配置apache\conf\extra\http-vhost.conf

<VirtualHost *:80>
DocumentRoot “D:\xampp\htdocs\zerg\public”
ServerName z.cn
</VirtualHost>

同時也要加上localhost的虛擬配置

DocumentRoot “D:\xampp\htdocs”
ServerName localhost

2、編輯系統host文件 Windows\System32\drivers\etc
加入127.0.0.1 z.cn
3、重啓apache服務器

十、路由

以入口文件前後分爲前後兩部分,後半部分簡化如下:
在這裏插入圖片描述
在application下的route.php編寫

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <[email protected]>
// +----------------------------------------------------------------------

//路由兩種編寫方法:
//1配置式方式
//return [
//    '__pattern__' => [
//        'name' => '\w+',
//    ],
//    '[hello]'     => [
//        ':id'   => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
//        ':name' => ['index/hello', ['method' => 'post']],
//    ],
//
//];

//2動態註冊方式
use think\Route;//調用Route這個類
//::調用類中的靜態方法、屬性、常量
//->引用一個類的屬性和方法
//=>定義數組

Route::rule('路由表達式','路由地址','請求類型','路由參數(數組)','變量規則(數組)');
//請求類型:GET,POST,DELETE,PUT,*

Route::rule('hello','sample/Test/hello','GET|POST',['https'=>false]);
//簡寫:Route::get('hello','sample/Test/hello');

十一、三種URL訪問模式

這三種模式在application/config.php下配置

  • PATH_INFO
  • 混合模式
  • 強制使用路由模式
    如果設置強制使用路由,那麼PATH_INFO就不起作用了

十二、獲取請求參數的三種方式

TP5手冊
在這裏插入圖片描述
- 第一種方法

route.php

use think\Route;
Route::post('hello/:id','sample/Test/hello');//模塊名/控制器名/操作方法名

Test.php

<?php
namespace app\sample\controller;
class Test
{
    public function hello($id,$name,$age){
        echo $id;
        echo '|';
        echo $name;
        echo '|';
        echo $age;
    }
}

Postman
在這裏插入圖片描述

- 第二種方法(導入Request類)
route.php

use think\Route;
Route::post('hello/:id','sample/Test/hello');

Test.php

<?php
namespace app\sample\controller;
use think\Request;
class Test
{
    public function hello(){
        //param不區分http類型
        $id = Request::instance()->param('id');//param可改爲get,route,post具體查手冊
        $name = Request::instance()->param('name');
        $age = Request::instance()->param('age');

        $all = Request::instance()->param();
        var_dump($all);

        echo $id;
        echo '|';
        echo $name;
        echo '|';
        echo $age;
    }
}

Postman
在這裏插入圖片描述

  • 第三種方法(助手函數)

route.php

use think\Route;
Route::post('hello/:id','sample/Test/hello');

Test.php

<?php
namespace app\sample\controller;
use think\Request;
class Test
{
    public function hello(){
        $all=input('param.');//param.id/param.name\param.age
        var_dump($all);
    }
}

Postman
在這裏插入圖片描述

  • 補充:依賴注入
    Test.php
<?php
namespace app\sample\controller;
use think\Request;
class Test
{
    public function hello(Request $request){
        $all = $request->param();
        var_dump($all);
    }
}

十三、功能分析

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章