我正在尝试对我的一些代码进行单元测试,根据一些变量动态调用我的 setter 会更容易。不幸的是,我的方法没有按预期工作,我找不到有关如何执行此操作的更多信息。我有一个始终是字符串的变量。它用作属性名称,并与“set”关键字一起使用,结果应为“setSomething”或“setSomethingElse”。我已经试过了$obj->set{$property}($value);// or$obj->set$property($value);但这些似乎不起作用。也许你们中的某个人知道正确的方法;)!
1 回答
手掌心
TA贡献1942条经验 获得超3个赞
您需要将整个方法名称设为变量,或者将整个名称括在{}例如
class test {
public $Something;
public $SomethingElse;
function setSomething($value) {
$this->Something = $value;
}
function setSomethingElse($value) {
$this->SomethingElse = $value;
}
}
$property = "Something";
$t = new test;
$setter = "set$property";
$t->$setter(4);
echo $t->Something;
$property = "SomethingElse";
$t->{"set$property"}(8);
echo $t->SomethingElse;
输出
4
8
- 1 回答
- 0 关注
- 383 浏览
添加回答
举报
0/150
提交
取消