零、序言
构建模块化应用程序是一项具有挑战性的任务。它涉及广泛的知识,从设计模式和原则到所选技术堆栈的细节。PHP 生态系统有很多工具、库、框架和平台可供选择,以帮助我们实现模块化应用程序开发的目标。
PHP7 带来了许多改进,可以进一步帮助实现这一目标。我们将通过研究其中的一些改进来开始我们的旅程。到本书结束时,我们的最终交付将是一个由 Symfony 框架构建的模块化 web shop 应用程序。
这本书涵盖的内容
第一章、生态系统概述温和介绍了 PHP 生态系统的现状。它介绍了 PHP7 的最新特性,其中一些特性为模块化开发中使用的新概念打开了大门。此外,本章还介绍了流行的 PHP 框架。
第 2 章GoF 设计模式描述了软件设计中常见问题的重复解决方案。下面给出了以下每种模式的实际 PHP 示例:创建模式类型、结构模式和行为模式。
第 3 章SOLID Design Principles以 SOLID 为首字母缩略词深入探讨了面向对象编程和设计的五个基本原则(单一责任、开放-关闭、Liskov 替换、接口分离和依赖倒置)它给出了实际的例子,并解释了这些原则在模块化开发中的重要性。
第 4 章模块化网店 App需求规范,引导读者完成定义整体应用需求的过程。它从定义实际的应用程序功能需求开始,一直发展到技术堆栈选择。
第 5 章Symfony 概览从高层次概述了 Symfony 作为一个框架、一套工具和一种开发方法。它关注于构建模块化应用程序所需的构建块。
第 6 章构建核心模块指导您基于 Symfony bundle 建立核心模块。然后,核心模块用于设置其他模块要使用的结构和依赖项。
第 7 章构建目录模块指导我们构建一个与网店目录功能集相匹配的自给自足模块。它向我们展示了如何设置与模块功能相关的实体,以及如何使用现有框架管理这些实体及其交互。
第 8 章构建客户模块指导我们构建与网店客户相关功能集相匹配的自给自足模块。它向我们展示了如何设置与模块功能相关的实体,以及如何使用现有框架管理这些实体及其交互。它进一步向我们展示了如何创建注册和登录系统。
第 9 章构建支付模块指导我们构建与网店支付相关功能集相匹配的自给自足模块。它向我们展示了如何与第三方支付提供商集成。它进一步向我们展示了如何将支付提供商作为服务公开给其他模块使用。
第 10 章构建发货模块指导我们构建与网店发货相关功能集相匹配的自给自足模块。它向我们展示了如何定义几种基于各种购物车产品属性产生不同装运定价的平面方法。它进一步向我们展示了如何将装运方法作为服务公开给其他模块使用。
第 11 章构建销售模块指导我们构建一个与网店纯销售功能集相匹配的自给自足模块。它向我们展示了如何设置与模块功能相关的购物车、购物车项目、订单和订单项目实体,以及如何使用现有框架管理这些实体及其交互。
第 12 章集成和分发模块将前面章节中构建的所有模块集成到一个功能单一的应用程序中。接下来,它将引导我们了解现代 PHP 模块分发技术。其中包括 Git 和 Composer,后者又间接包括 GitHub 和 Packagist。
这本书你需要什么
为了成功运行本书中提供的所有示例,您需要自己的 web 服务器或第三方 web 托管解决方案。高级技术栈包括 PHP7.0 或更高版本、Apache/Nginx 和 MySQL。
Symfony 框架本身附带了系统需求的详细列表,可在中找到 http://symfony.com/doc/current/reference/requirements.html 。
本书假设读者熟悉设置完整的开发环境。
这本书是给谁的
本书主要面向中级 PHP 开发人员,他们对模块化编程知之甚少甚至一无所知,他们希望了解设计模式和原则,以便更好地利用现有的模块化应用程序开发框架。
作为本书一部分开发的模块化 web shop 应用程序使用 Symfony 框架。但是,假设或要求之前不了解 Symfony 框架。
公约
在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。
文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“我们可以通过使用include
指令来包含其他上下文。”
代码块设置如下:
function hint (int $A, float $B, string $C, bool $D)
{
var_dump($A, $B, $C, $D);
}
任何命令行输入或输出的编写方式如下:
sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
新术语和重要词语以粗体显示。您在屏幕上看到的文字(例如,在菜单或对话框中)显示在文本中,如下所示:“单击下一个按钮将移动到下一个屏幕。”
注
警告或重要注释显示在这样的框中。
提示
提示和技巧如下所示。
读者反馈
我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢还是不喜欢。读者反馈对我们来说很重要,因为它可以帮助我们开发出您将真正从中获得最大收益的标题。
要向我们发送总体反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>
,并在邮件主题中提及该书的标题。
如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南www.packtpub.com/authors。
客户支持
既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。
下载示例代码
您可以从您的帐户下载本书的示例代码文件 http://www.packtpub.com 。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。
您可以通过以下步骤下载代码文件:
- 使用您的电子邮件地址和密码登录或注册我们的网站。
- 将鼠标指针悬停在顶部的支架选项卡上。
- 点击代码下载&勘误表。
- 在搜索框中输入图书名称。
- 选择要下载代码文件的书籍。
- 从您购买本书的下拉菜单中选择。
- 点击代码下载。
您也可以通过点击 Packt 出版网站上该书网页上的代码文件按钮下载代码文件。在搜索框中输入图书名称即可访问此页面。请注意,您需要登录到您的 Packt 帐户。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Modular-Programming-with-PHP7 。我们在上还提供了丰富的书籍和视频目录中的其他代码包 https://github.com/PacktPublishing/ 。看看他们!
下载本书彩色图片
我们还为您提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。彩色图像将帮助您更好地了解输出中的更改。您可以从下载此文件 https://www.packtpub.com/sites/default/files/downloads/ModularProgrammingwithPHP7_ColorImages.pdf 。
勘误表
虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问进行报告 http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表链接,输入您勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上载到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。
要查看之前提交的勘误表,请转至https://www.packtpub.com/books/content/support 并在搜索字段中输入图书名称。所需信息将出现在勘误表部分下。
盗版
在互联网上盗版版权材料是所有媒体都面临的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。
请致电<[copyright@packtpub.com](mailto:copyright@packtpub.com)>
与我们联系,并提供可疑盗版材料的链接。
我们感谢您在保护我们的作者方面提供的帮助以及我们为您带来有价值内容的能力。
问题
如果您对本书的任何方面有任何问题,可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>
与我们联系,我们将尽力解决该问题。
版权属于:月萌API www.moonapi.com,转载请注明出处