PHP编程
Completion requirements
方法重载与重写
重载 (Overloading)
PHP中的重载提供了动态创建属性和方法的方式。这些动态实体通过魔术方法进行处理,魔术方法可以在类中定义用于执行各种操作。简而言之,运行时创建属性/方法被称为属性重载/方法重载。
属性重载 (Property Overloading)
在PHP中,属性重载可以通过以下魔术方法来实现:__set
、__unset
、__isset
、__get
。通过这些魔术方法,我们可以动态地管理类的属性。重载也可以通过魔术方法如 __call
和 __callStatic
来实现。需要注意的是,PHP中“重载”的概念与大多数面向对象语言不同。在传统的面向对象语言中,重载通常指的是允许具有相同名称但参数数量和类型不同的方法。
Scope | Return Type | Method | Params | Syntax | Extra Note |
---|---|---|---|---|---|
public | void | __set | string $name, mixed $value | public void __set ( string $name , mixed $value ) | 当写入数据到不可访问的属性时触发 |
public | mixed | __get | string $name | public mixed __get ( string $name ) | 用于从不可访问的属性读取数据 |
public | bool | __isset | string $name | public bool __isset ( string $name ) | 由调用 isset() 或 empty() 在不可访问的属性上触发 |
public | void | __unset | string $name | public void __unset ( string $name ) | 当在不可访问的属性上使用 unset() 时调用 |
方法重载 (Method Overloading)
在PHP中,当我们尝试调用一个不存在的方法时,__call()
方法会被触发,这样我们就实现了方法重载。
Syntax | Description |
---|---|
public mixed __call ( string $name , array $arguments ) | 当在对象上下文中调用不可访问的方法时触发 __call() 方法。 |
public static mixed __callStatic ( string $name , array $arguments ) | 当在静态上下文中调用不可访问的方法时触发 __callStatic() 方法。 |
重写 (Overriding)
在面向对象编程(OOP)中,重写的含义是用子类中的方法替换父类的方法。简单来说,方法重写意味着改变方法的行为。在OOP中,重写是一个过程,通过它你可以在子类中重新声明父类的方法。因此,OOP中重写的基本含义是改变父类方法的行为。
通常,当父类中有某个方法,但在子类中你希望该方法具有不同的行为时,就需要使用方法重写。通过方法重写,你可以完全改变父类方法的行为。要在OOP中实现方法重写,通常需要在子类中创建一个与父类相同的方法。
总结
- 属性重载和方法重载使得PHP能够动态地创建和管理对象的属性和方法,尤其是在无法直接访问属性或方法时。
- 方法重写允许子类通过重新定义父类中的方法来改变其行为,使得子类可以根据需要提供不同的实现。
Last modified: Friday, 10 January 2025, 1:15 AM