我正在尝试使用array_map将数组映射到类的实际实例。
class Pet {
private $petName;
public function __construct($args) {
$this->petName = $args['petName'];
}
}
$array = [['petName' => 'puppy'], ['petName' => 'kitty']];
$instances = array_map([Pet::class, '__construct'], $array);
但是它以错误结尾:
non-static method Pet::__construct() cannot be called statically
是否可以将构造函数调用作为回调传递(除了将其包装在闭包中)?
最佳答案
构造函数不是要直接调用的,它们是由new
运算符以特殊方式调用的。
因此,提供使用new
的功能。
public static function makePet($args) {
return new Pet($args);
}
然后使用
$instances = array_map([Pet::class, 'makePet'], $array);