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();
我想知道是否可以使用数组的值(或键)作为方法的动态名称来创建方法链接。
比如我有一个数组:
$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();