php命名空间高级应用,来看看,PHP 对象的高级应用怎样实现

259074f1eac665158e7d90b13d006bb2.png

1、final 关键字

被 final 关键字修饰过的类和方法就是“就是最终版本”。如果一个类的格式为:

final class name{……}

说明该类不可以继承,也不能有子类。

如果一个方法的格式为:

final function method name()

说明该方法在子类中不可以进行重写,也不可以被覆盖。

【例1】本例为 SportObject 类设置关键字 final,并生成一个子类 MyBook。可以看到程序报错,无法执行。代码如下:

46ac6b5be24aa168876e634242c8da7b.png

结果为:

Fatal error: Class MyBook may not inherit from final class (SportObject) in D:\project\collection\test\11.phpon line 11

2、抽象类

抽象类是一种不能被实例化的类,只能作为其它类的父类来使用。抽象类使用 abstract 关键字来声明,格式为:

abstract class class_name{}

抽象类和普通类相似,包含成员变量、成员方法。两者的区别在于,抽象类至少要包含一种抽象方法。抽象方法没有方法体,其功能的实现在子类中完成。抽象方法也是使用 abstract 关键字来修饰的,格式如下:

abstract function name();

【例2】下面实现一个商品抽象类 CommodityObject,该抽象类包含一个抽象方法 service()。生成两个子类 MyBook 和 MyComputer,分别在两个子类中实现抽象方法。最后实例化两个对象,调用实现后的方法,输出结果。代码如下:

8c6d49e7dd2afd1c7886483e3c734d6d.png

运行结果如下图所示:

05b7118bca23394ce8a2f6cdee5fb57f.png

3、接口的使用

集成特性简化了对象、类的创建,增加了代码的可重性。单 PHP 只支持单继承。如需要实现多继承,就需使用接口。

接口类通过 interface 关键字来声明,并且类中只能包含未实现的方法和一些成员变量,格式如下:

interface interfaceName{function name1();function name2();}

注意:不要用 public 以外的关键字来修饰接口中的类成员,对于方法,不写关键字也可以。这是由接口类自身的属性决定的。

子类是通过 implements 关键字来实现接口的,如要实现多个接口,可在每个接口之间使用逗号“,”隔开。而且接口类中所有未实现的方法在子类中全部实现,否则PHP会报错。

【例3】首先声明了两个接口 MPopedom 和 MPurview,接着声明了两个类 Member 和 Manager,其中Member 类继承了 MPopedom 接口;Manager 继承了 MPopedom 和 MPurview 接口。分别实现各自成员方法后,实例化两个对象,调用实现后的方法。代码:

8fb112050585699661389726ba59ab9f.png

e92f921b4a31d8eeee45e5b0c3b4713d.png运行结果图

通过上面的实例可以发现,抽象类和接口实现的功能十分相似。抽象类的优点是可以在类中实现公共方法,而接口则可以实现多继承。

4、魔术方法

(1)__set()和__get()方法

这两个魔术方法的作用分别为:

当程序试图写入一个不存在或不可见的成员变量时,PHP就会执行__set() 方法。__set()方法包含两个参数,分别表示变量名和变量值,两个参数不可省略。

当程序调用一个未定义或是不可见的成员变量时,可以通过__get() 方法来读取变量的值。__get()方法有一个参数,表示要调用的变量名。

(2)__call() 方法

__call()方法的作用是:当程序试图调用不存在或不可见的成员方法时,PHP会先调用__call()方法来存储方法名及其参数。__call()方法包含两个参数,即方法名和方法参数。其中,方法参数是以数组形式存在的。

de3be70147a84bc5578e8075fa7d5432.png代码

34026144d1213a632cae1f8179019930.png结果图

fc187ccd0c42b70ea9b0901703818745.png

总结,PHP安全问题有哪些

php session 会话使用案例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值