Heim > Backend-Entwicklung > PHP-Tutorial > PHP学习笔记 -- 面向对象的核心概念

PHP学习笔记 -- 面向对象的核心概念

WBOY
Freigeben: 2016-07-29 08:57:11
Original
832 Leute haben es durchsucht
继承与多态都是对类进行复用,它们一个是类级别的复用,一个是方法级别的复用。类的组合与继承。低耦合、解耦、紧耦合。继承存在的问题:
1.继承破坏封装性。
2.继承是紧耦合的。
3.继承扩展复杂。
4.不恰当地使用继承可能违反现实世界中的逻辑。
在创建组合对象时,组合需要一一创建局部对象,这一定程度上增加了一些代码,而继承则不需要这一步,因为子类自动有了父类的方法。应该如何使用继承:
1.精心设计专门用于被继承的类,继承树的抽象层应该比较稳定,一般不要多于三层。
2.对于不是专门用于被继承的类,禁止其被继承,也就是使用final修饰符。使用final修饰符既可防止重要方法被非法覆写,又能给编辑器寻找优化的机会。
3.优先考虑用组合关系提高代码的可重用性。
4.子类是一种特殊的类型,而不只是父类的一个角色。
5.子类扩展,而不是覆盖或者使父类的功能失效。
6.底层代码多用组合,顶层/业务层代码多用继承。底层用组合可以提高效率,避免对象臃肿。顶层代码用继承可以提高灵活性,让业务使用更方便。
多继承机制:Traits。多态:
含义:同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。
重载并不是面向对象里的东西,和多态也不是一个概念,它属于多态的一种表现形式。
多态性是一种通过多种状态或阶段描述相同对象的编程方式。它的真正意义在于:实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属于的具体类。
多态的实现:
1.多态指同一类对象在运行时的具体化。
2.PHP语言是弱类型的,实现多态更简单、更灵活。
3.类型转换不是多态。
4.PHP中父类和子类看做“继父”和“继子”关系,它们存在继承关系,但不存在血缘关系。因此子类无法向上转型为父类,从而失去多态最典型的特征。
5.多态的本质就是if…else,只不过实现的层级不同。
接口定义一套规范描述一个“物”的功能,要求如果现实中的“物”想成为可用,就必须实现这些基本功能。抽象类和接口。从某种意义上来说,Traits和接口都是对“多重继承”的一种变相实现。接口的几个概念:
1.接口作为一种规范和契约存在。作为规范,接口应该保证可用性;作为契约,接口应该保证可控性。
2.接口只是一个声明,一旦使用interface关键字,就应该实现它。可以由程序员实现(外部接口),也可以由系统实现(内部接口)。接口本身什么都不做,但是它可以告诉我们它能做什么。
3.PHP中的接口存在两个不足,一是没有契约限制,二是缺少足够多的内部接口。
反射:
面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。
反射,直观理解就是根据到达地找到出发地和来源。
反射指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取信息以及动态调用对象方法的功能称为反射API。

反射的作用:可以用于文档生成。(hook?)

其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言

PHP有Token函数,可以通过这个机制实现一些反射功能。为什么要使用反射?反射存在的必要性是什么?

反射的目的就是为了扩展未知的应用


异常和错误处理:
异常(exception)和错误(error)的概念是不一样的。

以上就介绍了PHP学习笔记 -- 面向对象的核心概念,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage