PHP 使用动态名称的方法链接

PHP Method chaining with dynamic names

我想知道是否可以使用数组的值(或键)作为方法的动态名称来创建方法链接。

比如我有一个数组: $methods = ['first', 'second', 'third']

是否可以创建以下调用?

first()->second()->third();

这是未经测试的。大致如下:

$object = null; // set this to an initial object to call the methods on

foreach ($methods as $value)
{
    $object = $object->$value();
}

请注意,您调用的每个方法都应该 return 一个具有接下来要调用的方法的对象。如果它是相同 class 的对象 - 那么它可以 return 本身与每个可链接的方法。

您也可以使用 eval 函数。 示例:

$object = new SomeClass(); // first, second, third
$methods = ['first', 'second', 'third'];

$callStr = 'return $object->';

foreach($methods as $method){
    $callStr.= $method . '()->';
}

$callStr = substr($callStr, 0, -2);
$callStr.= ';'; // return $object->first()->second()->third();

$result = eval($callStr); // return result of call - $object->first()->second()->third();