假设我有以下信息:

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);

09-11 04:12