php - 在 PHP 中创建两个相同的静态类

标签 php class static extend late-static-binding

我正在尝试在 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/

相关文章:

Php Mailer 问题 - 邮件被标记为垃圾邮件 -

php - 使用 swift 和 API 进行 POST

c++ - 如何将 C++ 类/结构转换为原始/不同类型/类/结构?

c++ - header 和源类文件不起作用

java - 静态和非静态访问值

php - Facebook JS SDK和PHP SDK访问 token 冲突

php - 使用 .ajax() 返回 php 文件内容

c++ - 无法制作对象

c++ - 访问回调范围之外的变量c++

c++ - 对静态常量结构的 undefined reference