在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);