Php中的核心思想,面向对象思想的核心概念

本文介绍了PHP中的类和对象概念,详细阐述了魔术方法如__set、__get、__call、__callStatic、__toString、__construct和__destruct的功能。同时,解释了反射API在PHP中的应用,包括获取类信息、属性和方法。此外,讨论了继承、多态和组合在代码复用中的角色,并对比了它们的优劣。最后,简要概述了PHP中的接口和异常处理机制。
摘要由CSDN通过智能技术生成

什么是类?什么是对象?

类是由属性和方法组成的抽象组织。

对象是类的具体存在。

PHP中都有哪些魔术方法?它们的作用分别是什么?

PHP中由__(两个下划线)开头的方法开头的都是魔术方法(自定义的方法不属于)。

常用的魔术方法有:

__set($name,$value)

__get($name)

__call($name,$args)

__callStatic()

以上4个魔术方法的作用都是在对象调用不存在的属性或方法时,使程序不会报错的一种兼容操作。

set和get作用于属性

call作用于方法

callStatic作用于静态方法

5. __toString()

toString方法相当于一种序列化方式,例如将一个对象使用toString方法转换为一个字符串,使用echo 输出。

PHP中的序列化方法还有json_encode、serialize…它们本质上是相同的。

6. __construct()

初始化方法。

在实例化一个对象时会先调用此方法,常用于对象的初始化操作。

在PHP5.3.3之前初始化方法为与类命相同的方法,在5.3.3之后为了满足兼容性,如果类中没有construct方法并且也没有葱父类继承,PHP会尝试寻找旧式方法。

7. __destruct()

析构方法。

在程序终止时调用。包括exit()或者die()

反射是什么?反射的作用是什么?

反射的简单解释是:根据到达地找到来源地。

面向对象编程赋予了对象的自省能力即反射API,通过反射可以获取或导出类,也可以获取到类的方法、属性包括注释和私有。

so 反射常用于自动生成文档等。

反射的应用,实现一个简单示例

github 代码示例

代码示例通过反射API简单实现了:

获取类命

获取类中的所有常量

获取类中的所有属性 (属性名、属性值、静态属性、权限修饰符)

获取类中的所有方法 (方法名、注释、参数、静态方法、权限修饰符)

简述继承、多态和组合

继承和多态同属于面向对象的三大特征之一。

继承是指一个类通过extends或其他关键字成为另一个类的子类。

多态是指同一个类的对象收到相同的消息时会得到不同的结果。

组合是指通过属性的方式得到某个对象。

继承、组合和多态的意义归根结底都是为了简化代码提高复用性,不同的是继承是用于类的复用,多态是用于方法的复用。

在PHP中多态的实现不是很好,原因在于PHP是一门动态语言,PHP本身就是多态。

继承与组合的区别

继承是一种“是,像”的关系;

组合是一种“需要”的关系;

继承与组合的优劣势

继承的优点:

大大简化了代码

继承的缺点:

破坏了封装性

耦合度太高

扩展时复杂性提高

不恰当的使用会破坏现实世界的逻辑

so 在情况允许的前提下优先考虑组合

简述PHP中的Interface

Interface即接口,其起到的主要为“契约、规范”的作用。

接口类似于抽象类,其没有方法主体

被implements关键字实现的类必须实现接口中的所有方法。

“契约”作用也就是说接口中定义的方法实现类必须全部实现,否则会报错。

但PHP中的接口没有起到起到这样的作用,例如调用一个接口不存在的方法PHP也不会报错,所以显得有点鸡肋。

简述PHP中的异常处理机制。

PHP将所有的程序异常都视作错误。

在PHP中所有的异常必须手动抛出才会被捕获到。

如何接管PHP内置的错误处理

通过set_error_handler()函数可以接管。

其定义如下

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

实现一个类Java的异常处理机制

代码示例中使用了set_error_handler函数接管了PHP的内置错误处理方式。

在发成错误时由自定义错误处理方法手动抛出一个异常,phper只需关心发生异常后的补救方式即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值