Внедрение зависимостей - исключительный контекст, но я думаю, что иногда это излишнее.
Зачем реализовывать дополнительный метод или переопределять конструктор, если единственное, что вам нужно, в вашем примере, это знатьесли текущий пользователь может плавать?
Итак, IMMO, если сценарий использования прост, вы можете очень хорошо перейти на второй вариант, который вы предоставили, и снизить зависимость до значения, которое онзависит от:
goSwimming($sf_user->can_swim);
Конечно, все зависит от используемых концепций и от того, насколько расширен один класс от другого.
Если это только этот случай (результатв зависимости от умения пользователя плавать), тогда это можно упростить.Но если вызываемый метод / класс может в конечном итоге использовать больше атрибутов, то, вероятно, лучше использовать технику внедрения зависимостей, которая уже обсуждалась.UserTable может зависеть от sfUser для других вещей, так что это похоже на полную зависимость от класса.