在php类中动态创建“受保护的静态”变量

在php类中动态创建“受保护的静态”变量,php,class,pdo,extends,Php,Class,Pdo,Extends,有没有办法动态创建这些 类似这样的方法来创建受保护的静态变量 它不起作用,但我怀疑这是因为我需要它是静态的,以使它与扩展此变量的第三个类一起工作…如果您只有两个变量,使用更合适的名称为每个变量设置一个静态函数可能会更容易,例如 public function setVariable ($alias,$content){ self::${$alias} = $content; } 对代码进行微小更改以显示流程 但是如果你想要一个更开放的方法,我会选择一个关

有没有办法动态创建这些

类似这样的方法来创建受保护的静态变量


它不起作用,但我怀疑这是因为我需要它是静态的,以使它与扩展此变量的第三个类一起工作…

如果您只有两个变量,使用更合适的名称为每个变量设置一个静态函数可能会更容易,例如

    public function setVariable ($alias,$content){
            self::${$alias} = $content;
    }
对代码进行微小更改以显示流程

但是如果你想要一个更开放的方法,我会选择一个关联数组作为静态变量,然后像你现在一样使用1方法来设置数组中的值

class KD_DB {
    public static $dbOne = '';
    public static $dbTwo = '';

    public static function setOne ($content){
        self::$dbOne = $content;
    }
}

KD_DB::setOne("value for one");

var_dump(KD_DB::$dbOne);

如果您输入了一个应该在测试期间找到的变量引用,那么这种方法可能会有问题,但它确实提供了灵活性。

这里请注意:我不需要只有两个变量。可能更多,也可能只有一个。包含foreach循环的脚本设置setVariable-method。这就是我建议使用第二种方法作为替代方法的原因。
class KD_DB {
    public static $dbOne = '';
    public static $dbTwo = '';

    public static function setOne ($content){
        self::$dbOne = $content;
    }
}

KD_DB::setOne("value for one");

var_dump(KD_DB::$dbOne);
class KD_DB {
    public static $data = [];

    public static function setVariable ($alias,$content){
        self::$data[$alias] = $content;
    }
}

KD_DB::setVariable("three", "value for three");

var_dump(KD_DB::$data);