gpt4 book ai didi

php - 为后期静态绑定(bind)复制函数

转载 作者:行者123 更新时间:2023-11-29 05:17:13 37 4
gpt4 key购买 nike

我正在努力解决后期静态绑定(bind)问题,通过阅读几个堆栈溢出问题和手册,除了我不明白为什么,在我找到的所有示例(包括手册)中,我都在那里,直接呼应类名的方法在子类中重复。

我的理解是,从另一个类扩展而来的类会继承其父类的所有方法和属性。所以,为什么后期静态绑定(bind)的PHP手册中的who()方法是重复的。我意识到如果没有它,父类会被回显,但不明白为什么。

查看手册中的代码...

<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}

class B extends A {
public static function who() {
echo __CLASS__;
}
}

B::test();
?>

为什么需要重写 who() 方法,我认为它必须完全相同?提前致谢。

最佳答案

后期静态绑定(bind)类似于虚方法调用,但它是静态的。

在类 A 中,方法测试调用 two()。 two() 必须显示“A”。然而,因为这类似于虚拟方法,所以执行 B::two()

这是几乎相同的代码,但我相信更清楚发生了什么:

<?php
class A {
public static function process() {
echo "AAAA";
}
public static function test() {
static::process(); // Here comes Late Static Bindings
}
}

class B extends A {
public static function process() {
echo "BBBB";
}
}

B::test();

它在执行时打印 BBBB

关于php - 为后期静态绑定(bind)复制函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31171278/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com