PHP 设计模式系列 —— 装饰器模式(Decorator)

1、模式定义 装饰器模式能够从一个对象的外部动态地给对象添加功能。 通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是...

[ Laravel 5.2 文档 ] 开始 —— Laravel Homestead

1、简介 Laravel 致力于让整个 PHP 开发过程变得让人愉悦,包括本地开发环境,为此官方为我们提供了一整套本地开发环境 —— Laravel Homestead。 Laravel Homestead 是一个打包好各种 Laravel 开发所需要的工具及环境的 Vagrant 盒子(Vagrant 提供了一个便捷的方式来管理和设置虚拟机),该盒子为我们提供了优秀的开发环境,...

PHP 设计模式系列 —— 数据映射模式(Data Mapper)

1、模式定义 在了解数据映射模式之前,先了解下数据映射,它是在持久化数据存储层(通常是关系型数据库)和驻于内存的数据表现层之间进行双向数据传输的数据访问层。 数据映射模式的目的是让持久化数据存储层、驻于内存的数据表现层、以及数据映射本身三者相互独立、互不依赖。这个数据访问层由一个或多个映射器(或者数据访问对象)组成,用于实现数据传输。通用的数据访问层可以处理不同的实体类型,而专用...

[ Laravel 5.2 文档 ] 开始 —— 配置

1、介绍 Laravel 的所有配置文件都存放在 config 目录下,每个配置项都有注释,以保证浏览任意配置文件的配置项都能直观了解该配置项的作用及用法。 2、访问配置值 你可以使用全局辅助函数 config 在应用的任意位置访问配置值,该配置值可以文件名+"."+配置项的方式进行访问,当配置项没有被配置的时候返回默认值: $value = config('app.timezo...

[ Laravel 5.2 文档 ] 开始 —— 安装

1、服务器要求 Laravel 框架有对服务器有少量要求,当然,Laravel Homestead 已经满足所有这些要求,所以我们强烈推荐使用 Homestead 作为 Laravel 本地开发环境。 如果你没有使用 Homestead,那么需要保证开发环境满足以下要求: PHP版本 >= 5.5.9 PHP扩展:OpenSSL PHP扩展:PDO PH...

[ Laravel 5.2 文档 ] 序言 —— 贡献代码

1、缺陷报告 为了鼓励促进更加有效积极的合作,Laravel 强烈鼓励使用 GitHub 的 pull requests,而不是仅仅报告缺陷,“缺陷报告”也可以通过一个包含失败测试的 pull requests 的方式提交。 然而,如果你以文件的方式提交缺陷报告,你的问题应该包含一个标题和对该问题的明确说明,还要包含尽可能多的相关信息以及论证该问题的代码样板,缺陷报告的目的是为了...

Laravel 5.2 正式发布,小伙伴们可以在正式环境中使用了!

Laravel 5.2 已经正式发布,该版本提供了许多新的功能特性:多认证支持(支持多个认证模型)、隐式模型绑定、简化 Eloquent 全局作用域、可选的认证脚手架(创建认证视图)、中间件组(分组管理及使用中间件)、访问频率中间件(限制用户访问频率)、表单输入数组验证优化等等。 可以查看中文文档深入了解这些新功能:http://laravelacademy.org/pos...

PHP 设计模式系列 —— 组合模式(Composite)

1、模式定义 组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。 常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。 2、UML类图 3、示例代码 FormElement.php ...

在 Laravel 5.1 中使用 Intervention Image 包将图片颜色变灰

Intervention Image 是一个功能强大的 PHP 图片处理库,可用于将图片创建、编辑及组合等操作,并且提供了相关服务提供者和门面,所以很容易在 Laravel 中集成。下面我们就来演示如何在 Laravel 中使用 Intervention Image 提供的功能将图片变灰。 首先使用 Composer 安装 intervention/image 依赖包: comp...

PHP 设计模式系列 —— 桥梁模式(Bridge)

1、模式定义 系统设计中,总是充满了各种变数,这是防不慎防的。比如客户代表可能要求修改某个需求,增加某种功能等等。面对这样那样的变动,你只能去不停的修改设计和代码,并且要开始新的一轮测试…… 那采取什么样的方式可以较好的解决变化带给系统的影响?你可以分析变化的种类,将不变的框架使用抽象类定义出来,然后再将变化的内容使用具体的子类来分别实现。这样面向客户的只是一个抽象类,这种方式可...