PHP 设计模式系列 —— 多例模式(Multiton)

1、模式定义 多例模式和单例模式类似,但可以返回多个实例。比如我们有多个数据库连接,MySQL、SQLite、Postgres,又或者我们有多个日志记录器,分别用于记录调试信息和错误信息,这些都可以使用多例模式实现。 2、UML类图 3、示例代码 Multiton.php <?php namespace DesignPatterns\Creational\Mul...

PHP 设计模式系列 —— 工厂方法模式(Factory Method)

1、模式定义 定义一个创建对象的接口,但是让子类去实例化具体类。工厂方法模式让类的实例化延迟到子类中。 2、问题引出 框架需要为多个应用提供标准化的架构模型,同时也要允许独立应用定义自己的域对象并对其进行实例化。 3、解决办法 工厂方法以模板方法的方式创建对象来解决上述问题。父类定义所有标准通用行为,然后将创建细节放到子类中实现并输出给客户端。 人们通常使用工厂模式作为创...

Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)

为了测试需要,有时候需要在网站处于维护模式下允许特定IP访问网站,在 Laravel 中,这可以通过为维护模式编写自定义中间件来实现。 默认情况下,Laravel 使用 CheckForMaintenanceMode 中间件来判断网站是否处于维护模式并进行相应处理,该中间件的 handle() 方法定义如下: public function handle($request, Cl...

PHP 设计模式系列 —— 建造者模式(Builder)

1、模式定义 建造者模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2、问题引出 假设我们有个生产车的工厂,可以制造各种车,比如自行车、汽车、卡车等等,如果每辆车都是从头到尾按部就班地造,必然效率低下。 3、解决办法 我们可以试着将车的组装和零部件生产分离开来:让一个类似“导演”的角色负责车子组装,而具体造什么样的车需要什么样的零部件让具体的“...

PHP 设计模式系列 —— 抽象工厂模式(Abstract Factory)

1、模式概述 抽象工厂模式为一组相关或相互依赖的对象创建提供接口,而无需指定其具体实现类。抽象工厂的客户端不关心如何创建这些对象,只关心如何将它们组合到一起。 2、问题引出 举个例子,如果某个应用是可移植的,那么它需要封装平台依赖,这些平台可能包括窗口系统、操作系统、数据库等等。这种封装如果未经设计,通常代码会包含多个 if 条件语句以及对应平台的操作。这种硬编码不仅可读性差,而且...

PHP 设计模式系列 —— 概述及常用设计模式大全

1、设计模式概述 在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。 设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类或对象来描述其中的关系和相互作...

基于 Laravel 开发博客应用系列 —— 添加评论、RSS 订阅和站点地图功能实现

其实通过之前的步骤我们已经完成了博客的基本功能,这一节也是最后一节,我们来给博客加点料,让博客功能更加完善。 1、评论的问题 现在这个博客的主要缺憾就是用户不能对文章进行评论,不幸的是,博客评论有很多问题要处理。 首先是稳定、令人满意且通用的评论管理,当然,基于 Laravel 5.1 我们可以添加这个功能到后台管理系统,并且允许用户注册、登录、对文章进行评论等等。创建这些功能...

基于Laravel开发博客应用系列 —— 联系我们 & 发送邮件 & 队列使用(基于数据库)

本节我们将会添加联系我们功能到博客应用,要实现该功能我们需要了解 Laravel 的邮件发送功能以及队列处理机制。 1、邮件发送设置 为了使用 Laravel 5.1 的邮件发送功能,首选需要配置邮件发送,配置很简单,打开 .env 文件,查看邮件配置部分: MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_...

PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析

目前我安装的 Homestead 虚拟机版本是 2.1.8: 该版本 Homestead 上预装的 PHP 版本是 5.6.15: 我们使用 ab 命令(Apache 提供的性能测试工具)在该版本中测试 Laravel 应用(以目前正在讲的使用Laravel开发的博客应用为例)性能,我们模拟 10000 次请求,100 个并发进行压力测试: ab -n 10...

在 Windows 下安装部署 PHP 7.0 本地开发环境

1、在本地安装纯净的 PHP 7 到 PHP 官网 http://windows.php.net/download#php-7.0 下载与本机系统对应的安装版本: 如果是 32 位系统下载 x86 版本,64 位系统下载想 64 系统。 将下载的 zip 文件解压到指定目录,比如我将其解压到 E:/php7,然后在该目录下运行如下命令查看 PHP 版本信息: ph...