我正在尝试在 PHP 中扩展静态类。我遇到的是,一旦我更改了其中一个扩展类中的变量,所有其他类也会发生变化。这就是我想要做的:
class Fruit{
private static $name = Null;
public static function setName($name){
self::$name = $name;
}
public static function getName(){
return self::$name;
}
}
class Apple extends Fruit{};
class Banana extends Fruit{};
Apple::setName("apple");
Banana::setName("Banana");
echo Apple::getName();
echo Banana::getName();
我已经阅读了有关后期静态绑定(bind)和关键字 static::的内容。但是我想不出一种方法来实现这一点,而不必在 Apple 和 Banana 中重新声明所有 Fruit 的方法。
我很乐意提供任何帮助
谢谢
最佳答案
这个有效:
<?php
class Fruit{
protected static $name = Null;
public static function setName($name){
static::$name = $name;
}
public static function getName(){
return static::$name;
}
}
class Apple extends Fruit{protected static $name;};
class Banana extends Fruit{protected static $name;};
Apple::setName("apple");
Banana::setName("Banana");
echo Apple::getName();
echo Banana::getName();
不幸的是,您需要重新声明要专门化的静态属性,但您后期的静态绑定(bind)直觉是正确的:)
关于php - 在 PHP 中创建两个相同的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886655/