php - 在 php 类中动态创建“受保护的静态”变量
问题描述
class KD_DB extends PDO {
protected static $dbOne = '';
protected static $dbTwo = '';
public function setVariable ($alias,$content){
switch($alias){
case'one': self::$dbOne = $content; break;
case'two': self::$dbTwo = $content; break;
}
}
}
有没有办法动态创建这些?
像这样的东西来创建protected static variables
public function setVariable ($alias,$content){
self::${$alias} = $content;
}
它没有用,但我怀疑这是因为我需要它是静态的才能使其与扩展这个类的第三类一起工作......
解决方案
如果您只有这两个变量,则可能更容易(使用更合适的名称)static function
为每个变量设置它们,例如...
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);
(代码稍作改动以显示流程)
但是如果你想要一个更开放的方法,我会选择一个关联数组作为静态变量,然后使用 1 方法(就像你现在一样)来设置数组中的值......
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);
如果您错误输入了应该在测试期间找到的变量引用,则此方法可能会出现问题,但确实提供了灵活性。
推荐阅读
- sql - 当 B 与 A 匹配时,在表 A 上左连接表 B 是瞬时的,但当没有匹配时需要永远(> 1 分钟)。为什么是这样?
- linux - 当文件太长时,Vim undofile 不起作用
- mysql - 使用另一个表中的 id 更新行的 SQL 语句
- karate - 包含在空手道中的每个 json 数组中不起作用
- javascript - 以百分比获取进程 CPU 使用率
- excel - 如何每隔 n 行将一列中的一个单元格交换到另一列中的另一个单元格
- spring-boot - 非 bean 属性抛出 Bean 属性不可读或具有无效的 getter 方法
- entity-framework - 处理具有通用类约束的多个 EF Core 存储库的依赖注入
- vb.net - keydown 时如何检测我的datagridview?
- java - Fongo - Fake Mongo:无法从位置加载数据集以使用 fongo 对 mongrepository 进行单元测试