1.1. 创建自己的 CMS:引言
在本课程的这一部分,我们将学习如何创建一个属于自己的 CMS,用于构建一个在线商店。但在开始之前,您应该先阅读这篇引言,以了解是否真的需要自己开发 CMS,还是直接使用像 Drupal + Commerce 这样强大的系统(它已经拥有大量现成的模块)。在引言中,我们将探讨以下内容:
- 电子商务网站的工作逻辑
- 什么时候应该开发自己的 CMS,而不是使用现成的系统
- 自建 CMS 的优势
- 其他现成电子商务 CMS 的概览
什么是电子商务网站?为什么需要它?
如今,几乎每个人都体验过在互联网上购物。互联网上有成千上万的网站销售各种各样的商品:
1.2. 我们的 CMS 将包含哪些内容
在研究了现有的电子商务网站之后,我们需要确定未来 CMS 的主要功能。显然,我们必须为用户提供在不同类别中查找和浏览商品的功能。用户应该能够将商品加入购物车并通过结账流程填写订单信息,以计算运费、支付和税费。此外,我们还将实现订单和商品的后台管理面板。以下是详细的功能说明:
商品(Products)
我们需要为商品实现以下功能:
- 商品搜索: 我们需要提供两个列表——商品目录(分类)和商品搜索。
- 商品浏览: 当用户找到并感兴趣的商品时,我们必须让用户能够查看商品的详细信息。因此,商品页面应显示商品的价格、重量、尺寸和描述等信息。同时,可以增加用户对商品进行评分和评论的功能。
- 愿望清单(Wishlist): 让用户可以将想在未来购买的商品添加到愿望清单中。
订单结算(Checkout)
订单结算流程将包括三个阶段:
1.3. 构建我们的 PHP 框架
构建框架的方法有很多。有些开发者喜欢复杂而功能丰富的框架,而有些人更偏好简洁轻量的方案。在本系列文章中,我们将快速构建一个易于使用、易于理解的简易 PHP 框架。
这些文章将帮助你开发属于你自己的框架。虽然我们这里的示例是为了构建一个网上商店,但你可以轻松扩展框架的功能以适应其他需求。本系列的主要目标是教你如何从零开始构建一个适用于任何 CMS 的自定义框架。
设计模式(Patterns)
在框架开发中,通常会用到多种设计模式(Design Patterns)。设计模式是一些经过验证的最佳实践,用来解决软件开发中的常见问题。在本教程中,我们将使用以下几种模式:
- MVC(Model-View-Controller,模型-视图-控制器)
- Registry(注册器模式)
- Singleton(单例模式)
MVC(模型-视图-控制器)
MVC 是我们框架的核心结构,它能将应用程序的用户界面与业务逻辑分离。视图(View)与数据模型(Model)交互的中间层是控制器(Controller),控制器负责处理业务逻辑并操作模型中的数据。
1.4. 开始编写 MVC 框架
我们已经详细规划了框架应具备的结构,现在是时候开始实现我们的 MVC 框架了。首先,你需要一个 Web 服务器。你可以使用 Denwer,不过可能需要更新 PHP 版本。
你可以在此页面下载带有 PHP 5.5.20 的 Denwer:
https://drupalbook.org/ru/drupal/denwer-obnovlenie-php
或者从 GitHub 下载:
https://github.com/levmyshkin/denwer-php-5.5.20
我们的框架将从 index.php 文件开始运行,该文件会从注册器中获取实例,调用所需的控制器并将注册器结果传递给它。控制器反过来可以调用所需的模型。
1.5. 引入用于操作数据库和模板的类
我们已经为框架创建了结构,现在是时候考虑如何存储数据,例如新闻、商品等。用于操作数据库的对象需要具备以下功能:
- 管理数据库连接
- 提供对数据库的轻度抽象
- 缓存查询结果
- 简化常用数据库操作
为此,我们创建一个文件 Registry/objects/db.class.php:
1.6. 产品与分类 —— 创建数据库表
在创建商品和分类功能之前,让我们先思考一下,客户和网站管理员需要哪些信息。我们必须提供足够的商品信息:包括商品名称、商品详细描述、商品价格。我们还可以展示商品的主图和附加图片。为了计算运费,可能还需要商品重量;为了防止超卖,还需要库存数量。对于管理员而言,还需要商品的 ID 以及供搜索引擎使用的可读 URL(即“伪静态链接”)。
最终,我们至少需要以下字段:
PHP 语言的字母表
语言的字母表是指在该语言中允许使用的所有符号的集合。
PHP 语言的字母表包括以下符号:
字母
拉丁字母的大写和小写字母 A–Z、a–z,以及下划线符号(_),它也被视为字母。PHP 区分大小写,即大写和小写字母被视为不同字符;
数字
阿拉伯数字:0 1 2 3 4 5 6 7 8 9;
单字符符号
特殊单字符符号:+ - ! * / = < > . , : ; $ #;
括号
特殊成对符号:[ ] ( ) { };
复合符号
复合符号:< =、> =、< >、( * * )、( ) 等。
PHP 编程语言中也可以使用俄文字母,但最好不要在代码中使用非拉丁字符,因为并非所有程序员都拥有带有俄语布局的键盘。
PHP 编程入门
我们每个人或多或少都在某种程度上从事过编程。最简单的编程例子就是设定闹钟,让它在指定时间响起以便按时起床。除此之外,还有手机、自动洗衣机、微波炉、冰箱的温控器、电视机的定时器等等。
任何机器(包括计算机)在工作时,执行的都是由人预先编写的指令。技术越复杂,它能执行的操作就越多。目前,计算机是人类最复杂的技术设备之一,它能够解决极其复杂的任务。然而,要让计算机能完成这些任务,人必须使用某种编程语言为它编写程序。
编程语言(Programming Languages)最早出现在 20 世纪 50 年代中期。如今,全世界已有超过 2500 种编程语言及其变体。解决绝大多数问题都可以使用其中任意一种语言。
产品目录
产品目录——是您在互联网上的展示橱窗,即商品目录网站。网站目录页面让访客能够查看您所提供商品的外观(通常有多种视图),了解其特性,并阅读使用说明。产品目录网站能够有效促进产品销售,有时甚至可以直接实现销售功能。
目录网站的类型:
信息门户
信息门户允许您发布无限数量的产品,并根据类别进行分类。此外,可以为每个产品设置符合其特性的参数,例如尺寸、颜色、配置、价格等。每个产品都可以上传一张或多张照片,网站会自动生成可供放大查看的展示界面,从而提高展示效果。
信息门户的主要部分包括: