Предположим, что у меня есть простой класс:
class MyClass {
private $_prop;
public function getProp() {return $this->_prop;}
[....]
}
Теперь то, что я хочу сделать где-то не в области MyClass
, - это получить массив $_prop из массива объектов MyClass
($objs
). Это, конечно, можно сделать с помощью кода:
$props = array();
foreach ($objs as $obj) {
$props[] = $obj->getProp();
}
Однако это требует цитаты некоторых строк, esp, когда они формируются таким образом (и я должен использовать такое форматирование). Итак, вопрос: если это можно сделать с помощью array_map? Одним из способов было бы использовать функцию create, но мне это не очень нравится в php (lambdas в php, по крайней мере, неудобно, и если я правильно понимаю, его производительность похожа на производительность кода, но производительность здесь не указана). Я устал искать совсем немного и не нашел определенного ответа. Но у меня есть ощущение, что это невозможно. Я пробовал такие вещи, как array_map(array('MyClass', 'getProp'), $objs)
, но это не работает, поскольку метод не является статическим.
Изменить: я использую php 5.3.