[ Laravel 5.5 文档 ] 进阶系列 —— 通过事件和事件监听器实现服务解耦

简介 Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件类通常存放在 app/Events 目录,监听器存放在 app/Listeners。如果你在应用中没有看到这些目录,不要担心,它们会在你使用 Artisan 命令生成事件和监听器的时候自动创建。 事件为应用功能模块解耦提供了行之有效的解决办法,因为单个事件可以有多个监听器而这些监听器之间并...

《程序员修炼之道:从小工到专家》第五章:弯曲或折断(2)

四、它只是视图 一旦你基于责任把程序划分成不同模块,你就有了新的问题,在运行时,对象怎样相互交谈?你怎样管理它们之间的逻辑依赖?也就是说,你怎样对这些不同对象中的状态的变化进行同步? 我们将从事件的概念开始。 一个事件就是一条特殊的消息,说明“刚刚发生了某件有趣的事情”,我们可以用事件把某个对象的状态变化通知给可能感兴趣的其他对象。这样使用事件使得那些对象之间的耦合得以减至...

《程序员修炼之道:从小工到专家》第五章:弯曲或折断(1)

在“可撤销性”中,我们谈到不可撤销的决策的危险,在本章,我们将告诉你怎样做出可撤销的决策,以使你的代码在面对你不确定的世界时保持灵活性和可适应性。 一、解耦与得墨忒耳法则 好篱笆促成好邻居。 在“正交性”和“按合约设计”中,我们提出,编写“羞怯”的代码是有益的,但“羞怯”的工作方式有两种:不向别人暴露自己,不太与太多人打交道。 把你的代码组织成最小组织单位(模块),并...

《程序员修炼之道:从小工到专家》第二章:注重实效的途径(1)

一、重复的危害 系统中的每一项知识必须具有单一、无歧义、权威的表示,这就是DRY原则(Don‘t Repeat Yourself)。 与此不同的做法是在两个或多个地方表达同一事物。如果你改变其中一处,你必须改变其它各处。 重复是怎样发生的 强加的重复(环境使然) 无意的重复 无耐性的重复(开发者偷懒,如何避免?记住“欲速则不达”,现在节省几秒钟,以后会付出数...

现代 PHP 新特性系列(二) —— 善用接口

接口不是现代PHP的新特性,但是非常重要,学会使用接口,可以极大提升我们的编程能力,所以在日常开发中应该尽可能多地使用接口。 接口是两个PHP对象之间的契约(Contract),Laravel底层就直接将接口放在Contracts目录中: 接口将我们的代码和依赖解耦了,而且允许我们的代码依赖任何实现了预期接口的第三方代码,我们不管第三方代码是如何实现接口的,只关心第三...