对于阅读本文的PHP大师,我相信你会理解我在这里寻找的东西。我正在寻找一种做我已经做的事情的一般方法。目前,我支持一个方法值,该方法值最多包含6个由|分隔的方法名称字符。如果我想能够支持n可以是任何数字的方法,我怎么能转换下面的代码。我基本上都在寻找有助于减少目前代码量的语法。
// example value for $method
// $method = 'getProjectObject|getProgramObject|getName';
$methods = explode('|', $method);
if (sizeof($methods) == 1) {
$value = $object->$method();
}
else if (sizeof($methods) == 2) {
$value = $object->$methods[0]()->$methods[1]();
}
else if (sizeof($methods) == 3) {
$value = $object->$methods[0]()->$methods[1]()->$methods[2]();
}
else if (sizeof($methods) == 4) {
$value = $object->$methods[0]()->$methods[1]()->$methods[2]()->$methods[3]();
}
else if (sizeof($methods) == 5) {
$value = $object->$methods[0]()->$methods[1]()->$methods[2]()->$methods[3]()->$methods[4]();
}
else if (sizeof($methods) == 6) {
$value = $object->$methods[0]()->$methods[1]()->$methods[2]()->$methods[3]()->$methods[4]()->$methods[5]();
}
答案 0 :(得分:3)
您可以使用foreach
之类的循环:
$methods = explode('|', $method);
foreach ($methods as $method) {
$object = $object->$method();
}
$value = $object;
答案 1 :(得分:3)
$methods = explode('|', $method);
$ret = $object;
foreach ($methods as $method)
{
$ret = $ret->$method();
}
return $ret;