[ Laravel 从学徒到工匠系列 ] 设计原则篇:里氏替换原则

简介 别担心,里氏替换原则名字起的高大上,但是其实很简单。该原则可以描述为:一个抽象的任意实现都可以在声明该抽象的地方替换它。读起来有点绕口,通俗点说就是个:如果一个类使用了某个接口的实现,那么一定可以通过该接口的其它实现来替换它,不用做出任何修改。 里氏替换原则规定对象可以被其子类的实例所替换,并且不会影响到程序的正确性。 实战 为了说明该原则,我们继续使用前面编写的 OrderP...

[ Laravel 从学徒到工匠系列 ] 接口即契约篇

强类型与鸭子类型 在之前的章节里,我们讨论了依赖注入的基础知识:什么是依赖注入;如何实现依赖注入;依赖注入有什么好处。之前的例子中也模拟了将接口注入到类里面的过程。在我们继续学习后续内容之前,有必要深入讨论一下接口,而这正是很多 PHP 开发者所不熟悉的。 在我成为 PHP 程序员之前,我是写 .NET 的。你觉得我是喜欢原生代码还是什么?在 .NET 里到处都是接口,而且很多接口都定义...

[ Laravel 从学徒到工匠系列 ] 依赖注入篇

问题引入 整个 Laravel 框架的基石是一个功能强大的 IoC 容器(控制反转容器),如果你想真正从底层理解 Laravel 框架,就必须好好掌握它。不过,也不要被这个名头吓住,要知道 IoC 容器只不过是一种用于方便我们实现「依赖注入」这种软件设计模式的工具。而且要实现依赖注入并不一定非要通过 IoC 容器,只是使用 IoC 容器会更容易一点儿。 首先,来看看我们为何要使用依赖注入...

[ PHP 内核与扩展开发系列] 类与面向对象:接口实现与类的继承

定义接口 定义一个接口还是很方便的,我先给出一个 PHP 语言中的实现: <?php interface i_myinterface { public function hello(); } 其在扩展中的实现是这样的: zend_class_entry *i_myinterface_ce; static zend_f...