Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablica z lista instancji klas
Forum PHP.pl > Forum > PHP
rad11
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 ?
Pyton_000
Coś mi się zdaje że zabierasz się do tego ze złej strony.

Pokaż jakis konkretny przykład co chcesz zrobić.
rad11
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?
markuz
Pokaż źródło MarszalkowskaLocation jak możesz.
rad11
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.
markuz
Zakładając, że Marszalkowska to ulica - ciekawy jestem ile będziesz miał tych klas pokrewnych i ile dojdzie z czasem.
rad11
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.