Olá Leonardo,
O método map é um método bastante conhecido em diversas linguagens de programação onde seu objetivo é mapear os elementos de um array ou coleção de dados.
O $aluno->getTelefones() me retornaria todos objetos guardados, porém eu quero transformar/mapear esses objetos para obter somente os números e como transformamos coisas na programação? Através de funções.
Então, o map recebe um callback (função) como parâmetro, que no nosso caso é o function(Telefone $telefone) return $telefone->getNumero();
e irá aplicar essa função a cada elemento de nossa coleção, ou seja, se eu tiver quatro elementos na minha coleção, por exemplo, o map pegará o primeiro elemento dessa coleção e irá aplicar essa função retornando somente o número do telefone, depois fará o mesmo procedimento com o segundo elemento e assim sucessivamente.
Seria a mesma coisa coisa de fazer:
foreach($aluno->getTelefones() as $telefone)
{
$telefones[] = $telefone->getTelefone();
}
return $telefones;
Mas pense: Realizar transformações em elementos de um array é uma tarefa tão corriqueira por que não abstrair isso de alguma forma? Por isso temos o map.
Esse é um map da própria collection do doctrine, mas no PHP temos essa função também. Sugiro que dê uma pesquisada sobre map, filter e reduce, são funções muitos importantes no dia a dia de desenvolvimento.
Pode ter ficado meio confuso, mas tentei explicar de maneira mais simples possível, sem utilizar muitos jargões, se não ficou muito claro só falar.