Не думаю, что это плохая практика, Zend Framework использует это (и я считаю, что это отличный кусок кода php, который использует почти все, что предоставляет php). Вот хорошая статья с примерами.
Позволяет писать упрощенный код без повторного доступа к переменным, а лучше читаемые коды - вот что важно ..
Объект всегда(в php5) возвращается как ссылки, так что это не должно вызывать никаких накладных расходов.
В любом случае, я бы переименовал все функции в public function &setFirstName($first)
, чтобы было ясно, что вы хотите переписать сам объект при следующем вызове, но это определенноне обязательно.
РЕДАКТИРОВАТЬ по ссылкам
Здесь описано, что такое ссылки (прочитайте также, что они делают, а что нет) и как вернуть ссылку из функции.Как упоминалось ранее, php 5 " по умолчанию работает с объектом как ссылка " (не совсем верно, прочитайте статью), поэтому добавление &
перед именем функции не требуется, но вы проясните это (и явно), что «Я хочу работать со ссылкой на объект» .