Obter todas as permutações de um array PHP?

Dado um array PHP de strings, por exemplo:

['peter', 'paul', 'mary']

Como gerar todas as permutações possíveis de elementos dessa matriz? ou seja:

peter-paul-mary
peter-mary-paul
paul-peter-mary
paul-mary-peter
mary-peter-paul
mary-paul-peter