gpt4 book ai didi

PHP 无法覆盖 protected 静态

转载 作者:可可西里 更新时间:2023-11-01 13:05:26 26 4
gpt4 key购买 nike

我似乎无法覆盖 protected static 变量。这很烦人,因为您也不能覆盖任何私有(private)变量。我该如何解决? (必须支持PHP 5.2)

<?
class Foo{
protected static $stuff = 'Foo';
public function showStuff(){
echo self::$stuff . PHP_EOL;
}
}

class Bar extends Foo{
protected static $stuff = 'Bar';
}

$f = new Foo();
$b = new Bar();
$f->showStuff(); // Output: Foo
$b->showStuff(); // Output: Foo
?>

最佳答案

您需要使用 late static bindings , PHP 5.3 中引入的一个特性。在您的类 Foo 中,self 指的是 Foo 类。您想要引用发起调用的类。您需要使用关键字 static:

<?
class Foo{
protected static $stuff = 'Foo';
public function showStuff(){
echo static::$stuff . PHP_EOL; // <-- this line
}
}

class Bar extends Foo{
protected static $stuff = 'Bar';
}

$f = new Foo();
$b = new Bar();
$f->showStuff(); // Output: Foo
$b->showStuff(); // Output: Bar
?>

关于PHP 无法覆盖 protected 静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6164863/

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