Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tablica z lista instancji klas
rad11
post 5.07.2018, 15:04:13
Post #1





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,

Czy jest jakis prosty sposob w Symfony aby utworzyc taka tablice

  1. [
  2. 'foo' => new class Bar(tutaj parametry wazne zeby miec dostep do kontenera)
  3. ]


Jako np service i przekazac Ja dalej jako dependencje ?
Go to the top of the page
+Quote Post
Pyton_000
post 5.07.2018, 19:08:29
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Coś mi się zdaje że zabierasz się do tego ze złej strony.

Pokaż jakis konkretny przykład co chcesz zrobić.
Go to the top of the page
+Quote Post
rad11
post 6.07.2018, 04:49:03
Post #3





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam sobie klasę fabryki:

  1. <?php
  2.  
  3. namespace BPO\COFBundle\Factory;
  4.  
  5. use Symfony\Component\DependencyInjection\ContainerAwareInterface;
  6. use Symfony\Component\DependencyInjection\ContainerAwareTrait;
  7.  
  8. class LocationSyncMapping implements ContainerAwareInterface
  9. {
  10. use ContainerAwareTrait;
  11.  
  12. /**
  13.   * @return array
  14.   */
  15. public function getMappings(): array
  16. {
  17. return [
  18. 'marszalkowska' => $this->getMarszalkowskaLocation()
  19. ];
  20. }
  21.  
  22. /**
  23.   * @return MarszalkowskaLocation
  24.   */
  25. public function getMarszalkowskaLocation()
  26. {
  27. return new MarszalkowskaLocation(
  28. $this->container->get('database_connection')
  29. );
  30. }
  31. }


  1. <?php
  2.  
  3. namespace BPO\COFBundle\Factory;
  4.  
  5. class LocationSyncFactory implements LocationSyncFactoryInterface
  6. {
  7. /**
  8.   * @var LocationSyncMapping
  9.   */
  10. private $mapping;
  11.  
  12. /**
  13.   * @param LocationSyncMapping $mapping
  14.   */
  15. public function __construct(
  16. LocationSyncMapping $mapping
  17. )
  18. {
  19. $this->mapping = $mapping;
  20. }
  21.  
  22. /**
  23.   * {@inheritdoc}
  24.   */
  25. public function create(string $name, string $file)
  26. {
  27. /* @var $location LocationInterface */
  28. $location = $this->mapping->getMappings()[$name] questionmark.gif null;
  29.  
  30. if (is_null($location)) {
  31. throw new \InvalidArgumentException();
  32. }
  33.  
  34. return $location->synchronize($file);
  35. }
  36. }
  37.  


W której chciałbym przekazać tablicę z mapowaniem tak jak napisałem na samym początku. W tej chwili stworzyłem po prostu klasę w której metoda getMappings zwraca mi tą mapę ale jest to moim zdaniem bez sensu i nie potrzebne. Może rzeczywiście się za to źle zabieram jeśli tak to jak inaczej?
Go to the top of the page
+Quote Post
markuz
post 6.07.2018, 09:31:52
Post #4





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Pokaż źródło MarszalkowskaLocation jak możesz.


--------------------
Go to the top of the page
+Quote Post
rad11
post 6.07.2018, 10:11:03
Post #5





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Problem rozwiązany. Ogarnąłem to troszkę inaczej. Klasę MarszalkowskaLocation zarejestrowałem jako service. A w komendzie pobieram instancje lokacji z głównego kontenera na podstawie przekazanego argumentu nazwy lokacji.
Go to the top of the page
+Quote Post
markuz
post 6.07.2018, 10:20:11
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Zakładając, że Marszalkowska to ulica - ciekawy jestem ile będziesz miał tych klas pokrewnych i ile dojdzie z czasem.


--------------------
Go to the top of the page
+Quote Post
rad11
post 6.07.2018, 10:24:06
Post #7





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To w zasadzie jest skrypt jedno razowy smile.gif mamy przeprowadzkę w firmie na nową lokalizację i trzeba ustawić nowe pokoje użytkownikom. Jak będzie kiedyś kolejna przeprowadzka to doda się kolejną klasę. Jak wiadomo codziennie się nie przeprowadza.

Ten post edytował rad11 6.07.2018, 10:24:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 18:29