How do people design their service layer interfaces?

I'm programming a large web application (in PHP) and we're using MVC, and programming thin controllers e.g. (pseudo code follows)

```
public savePersonAction() {
    $input = filter($_GET);
    ... input validation ...

    $result = $this->_service->savePerson( ? );

    ... etc
}

```

Should savePerson in the service take an argument of the entire $input structure or context (in PHP, an associative array)?

E.g. this - 

```
public function savePerson(array $input) {

```

or should one separate out all the input fields and provide a "hard" interface e.g.

```
public function savePerson($title, $firstName, $lastName, $dateOfBirth, ... etc.. for many more) {

```

Thanks.

Paul