跳至内容

PHP 编程/重写与重载

来自维基教科书,开放世界中的开放书籍

PHP 中的重载提供了一种动态“创建”属性和方法的方式。这些动态实体通过可以在类中为各种操作类型建立的魔术方法进行处理。换句话说,在运行时创建属性/方法被称为属性重载/方法重载。

属性重载

[编辑 | 编辑源代码]

在 PHP 中,属性重载可以通过诸如 __set、__unset、__isset、__get 方法之类的魔术方法来完成。重载可以通过诸如 __call 和 __call_static 之类的魔术方法来完成。PHP 对“重载”的解释与大多数面向对象语言不同。传统上,重载提供了具有相同名称但参数数量和类型不同的多个方法的能力。

范围 返回类型 方法 参数 语法 额外说明
公有 __set 字符串 $name , 混合 $value public void __set ( string $name , mixed $value ) 在写入不可访问属性的数据时运行。
公有 混合 __get 字符串 $name public mixed __get ( string $name ) 用于从不可访问属性读取数据
公有 布尔 __isset 字符串 $name public bool __isset ( string $name ) 在对不可访问属性调用 isset() 或 empty() 时触发
公有 __unset 字符串 $name public void __unset ( string $name ) 在对不可访问属性使用 unset() 时调用。

方法重载

[编辑 | 编辑源代码]

当我们尝试调用 PHP 中不存在的方法时,__call() 会被调用,这样我们就实现了方法重载。

语法 描述
public mixed __call ( string $name , array $arguments ) __call() 在对象上下文中调用不可访问方法时触发。
public static mixed __callStatic ( string $name , array $arguments ) __callStatic() 在静态上下文中调用不可访问方法时触发。

在 OOP 中,重写的含义是在子类中替换父类方法。或者用简单的技术术语来说,方法重写意味着改变方法的行为。在 OOP 中,重写是您可以重新声明父类方法在子类中的过程。因此,OOP 中重写的基本含义是改变父类方法的行为。

通常,当您的父类有一些方法,但在子类中您想要具有不同行为的相同方法时,需要进行方法重写。通过方法重写,您可以完全改变它从父类中的行为。为了在 OOP 中实现方法重写,我们通常在子类中创建相同的方法。


华夏公益教科书