Можно писать включая пакетную передачу как отдельно, так и в get/set ("перегружено"): чтобы и массив можно было передать в конструктор или функцию send(), и set/get'ры работали. Это наиболее оптимально.
$data=array([
'to' => 'mailto@mail.ru',
'from' => 'mailfrom@mail.ru',
'subject' => 'Тема письма',
'body' => 'Текст письма'
]);
Тогда:
$mail = new Mail($data);
$mail->send();
или
$mail = new Mail();
$mail->send($data);
и потом:
$mail->to("новый@адрес.отправителя"); //setter
или текущий:
$current = $mail->to(); //getter
Когда используем массив, то методы setter/getter можно сформировать динамически, а можно проверить "ключи" на присутствие одноимённых методов в классе и лишнее - исключить/обработать с ошибкой.