Fabryka obiektów

0

Witam.
Mam klasę która produkuje mi encje File lecz owa encja potrzebuje obiektu user, a wygląda to tak:

static public function createFileFromUploadFile(UploadedFile $uploadedFile,UserInterface $user) : File
   {
       return (new File())->setSize($uploadedFile->getSize())
           ->setUser($user)
           ->setName($uploadedFile->getClientOriginalName())
           ->setMimeType($uploadedFile->getClientMimeType())
           ->setServerName(md5($uploadedFile->getClientOriginalName()))//todo sald!!
           ->setDateAdd(new \DateTime()); //todo clock;
   }

Co o tym myślicie? Czy jednak obiekt user powinien zostać inaczej przekazany? Ew czy dobrze, że produkuje jeden obiekt na podstawie innego?

0

Skoro User jest zależnością niezbędną to powinieneś dodać go jako parametr w konstruktorze. Ogólnie temat nazywa się Dependency Injection, powinieneś sobie o tym poczytać. Tutaj jakiś przykład z googla: http://lukasz-socha.pl/php/wzorce-projektowe-cz-6-dependency-injection/

0

Dlaczego robisz to przez setery a nie wstrzykujesz zależności w konstruktorze?

0
Markuz napisał(a):

Dlaczego robisz to przez setery a nie wstrzykujesz zależności w konstruktorze?

Myślę że setowanie wartości obiektu jest bardziej estetyczne

0
gaUa69 napisał(a):

Skoro User jest zależnością niezbędną to powinieneś dodać go jako parametr w konstruktorze. Ogólnie temat nazywa się Dependency Injection, powinieneś sobie o tym poczytać. Tutaj jakiś przykład z googla: http://lukasz-socha.pl/php/wzorce-projektowe-cz-6-dependency-injection/

Wiem czym jest DI. Ale uznałem że statyczna metoda produkująca obiekt File będzie lepsza gdyż czasem będę musiał podawać rożnych użytkowników do tej encji. Co wiązało by sie ze zmianą tego user w juz istniejącej instancji fabryki

1

Tutaj nie chodzi o estetyke. Konstruktora używamy gdy zalezność jest wymagana, a settera gdy zalezność jest opcjonalna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1