假设我有以下信息:
class Thing {
function __construct($id) {
// some functionality to look up the record and initialize the object.
return $this;
}
}
现在给出一个id数组,我想以一个实例化的东西数组结束。大致如下:
$ids = array(1, 2, 3, 4, 5);
$things = array_map(array('Thing', 'new'), $ids); // Doesn't work
当然,thing类没有“new”方法,而且“\u construct”也是禁止的。我知道这可以通过循环$id的额外步骤来完成,但是有没有一种巧妙的方法可以使用array-map在每个节点上调用“new thing($id)”?
最佳答案
它不能工作,因为没有静态方法Thing::new
。您可以添加它,也可以将函数作为array_map
回调函数提供:
$ids = array(1, 2, 3, 4, 5);
$things = array_map(function($id){return new Thing($id);}, $ids);