$userId = 1234; $user = new User($userId); // tworze obiekt User o podanym id, może być nie istniejące $userManager = new UserManager($user); // Mógłbyś pisać: $userManager = new UserManager( $userId );
2. W związku z pkt. 1 nie możesz już przekazywać obiektu User w konstruktorze UserManagera. Zamiast tego będziesz musiał poinformować metodę getData() o jakiego użytkownika ci chodzi.
3. Nie wiem czym się u ciebie różni user od userData, ale moim zdaniem jest to zbędne rozgraniczenie
Po oczyszczeniu kodu ze zbędnych instrukcji, zostanie ci pewnie coś w rodzaju:
$userManager = new UserManager($userId); $userData = $userManager->getData(); $userManager->changePassword('abc123'); $userManager->save(); $userDataNew = $userManager->getData();
Jak widzisz jedynymi informacjami jakie przekazujesz tutaj w parametrach jest ID użytkownika i hasło. Jak się pewnie domyślasz, obok DI to to nawet nie stało

Dla porównania podaję zalążek kodu wykorzystania (a przynajmniej tego, jak ja to widzę) klasy UserManager, korzystającej z PDO oraz logującej błędy:
<<?php interface ILogger { function Log( $message ); } class TxtLogger implements ILogger { public function __construct( $filePath ) { /*...*/} public function Log( $message ) { /* Zapisuje wiadomość do pliku ... */ } } class NullLogger implements ILogger { public function Log( $message ) { return; // ignoruje wiadomość (nie zapisuje jej nigdzie) } } class User { /* kontener na dane użytkownika */ } class UserManager { private $db; private $logger; public function __construct( PDO $db, ILogger $logger ) { $this->db = $db; $this->logger = $logger; } public function getDataById( $userId ) { // Pobierz dane na temat użytkownika z bazy danych. // Jeśli znaleziono użytkownika o podanym ID, utwórz, wypełnij i zwróć obiekt klasy User // W przeciwnym wypadku zapisz informację o błędzie przy użyciu loggera i rzuć wyjątek } } $mysqlDb = new PDO( "blablabla" ); $userManager = new UserManager( $mysqlDb, new NullLogger() ); // Utworzenie managera użtykowników, korzystającego z bazy MySQL i nie logującego błędów ?>