-1

对于阅读本文的 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]();
}
4

2 回答 2

3

您可以使用一些循环,例如foreach

$methods = explode('|', $method);
foreach ($methods as $method) {
    $object = $object->$method();
}
$value = $object;
于 2013-02-06T18:53:34.097 回答
3
$methods = explode('|', $method);
$ret = $object;
foreach ($methods as $method)
{
    $ret = $ret->$method();
}
return $ret;
于 2013-02-06T18:54:36.353 回答