Day 14 - PHP SDK: 用 Pure PHP 建立购物网 (上)

今天开始会分两天,上、下集来介绍单纯使用 PHP,不使用 PHP 框架的方法,来搭建一个购物网站。

图 14-1
图 14-1: Terry's 商店

原本想一口气完成这个范例,不过今天下班回到家已经很晚了,很临时地用了 Bootstrap 4 当作前端 CSS 的基础,搭了购物网的首页如上图。

今日的程序码放在范例,目前是一个骨架,并不会有会员功能。只是示范使用 Sinopac PHP SDK 从浏览商品,下单、选择付款方式、付款完成後到感谢页面这一连串流程。

档案结构

.
├── app
│   ├── controllers
│   │   ├── checkout_controller.php
│   │   ├── home_controller.php
│   │   ├── order_controller.php
│   │   └── product_controller.php
│   ├── resource
│   │   └── product_data.json
│   ├── storage
│   ├── views
│   │   ├── checkout.php
│   │   ├── home.php
│   │   ├── main.php
│   │   ├── order_error.php
│   │   ├── order_received.php
│   │   └── product.php
│   ├── config.php
│   ├── functions.php
│   └── route.php
├── public
│   ├── index.php
│   └── style.css
├── vendor
├── composer.json
└── composer.lock

目录: public

public 目录放置的是入口档案 index.php 会载入的档案。

目录: app

放置主要网站应用的部分如下。

路由: route.php

为了让范例越简洁越好,能随便跑起来,不需要设定 Nginx 或 Apache 的网址改写功能,并无使用静态路由网址功能。

路由: config.php

设定测试资料的地方。

帮助函式: functions.php

简易的 template 载入、读取 controller 等等。

目录: controllers

各页面的逻辑切分。在 Day 15 有进一步说明。

目录: resource

放置商品的模拟资料 JSON 档。

目录: views

页面的样板档案。

目录: storage

由於本范例不使用资料库,订单资料会以订单的 ID 为档案名称,以 JSON 结构存放资料在这个目录中。

目录: vender

vendor、composer.json、composer.lock 目录是 composer 安装 Sinopac PHP SDK 会自动产生的档案。


页面规划

预计会有以下页面:

  • home: 首页、商品列表页面
  • product: 商品介绍页
  • checkout: 结帐页面
  • order_received: 结帐结果页面(感谢页面)

图 14-1
图 14-1: Terry's 商店 - 商品介绍页

从首页选取任何一个商品之後,来到商品介绍页。点击前往「结帐按纽」进入结帐页。

图 14-1
图 14-1: Terry's 商店 - 结帐页面

填写完收件人资料後,按下进行付款,会开始本次金流串接的主要流程。

接下来 Day 15 就来看看整个流程如何运作。笔者会尽量让程序码越少越好,帮助大家理解哦。


本文更新於笔者的 TerryL 部落格,Day 14 - PHP SDK: 用 Pure PHP 建立购物网 (上),有兴趣可前往阅读及讨论。


<<:  [Day 28] 资料产品开发实务 - 非机器学习模型

>>:  Youtube Data API 教学 - 告一个段落

[Bonus 系列] - 来看看 React Router v6 有什麽新功能?和 v5 有哪些地方不同?

在 2021 年 11 月初,React Router 正式释出 v6 版本,身为 React 开发...

[JMeter]简单的多人登入压力测试

将JMeter安装完成後,就可以开始尝试做一些简单的测试了, 我们可以先模拟多人同时登入的情况,进行...

#14 补值教学

今天要来解决空缺的部份,我们要使用的素材如下,是一张每隔五分钟就纪录温度的资料表,我结图整张表最上面...

使用jupyterhub执行MNIST training

在上一篇我们已经安装好JupyterHub, 也说明config档的参数内容, 现在我们使用admi...

Top 5 Reasons why you ought to learn Artificial Intelligence

AI is characterized as : AI or Artificial Intellig...