![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, jeśli odpowiedź na moje pytanie jest banalna. Jednak szukam w Google i nie mogę nic znaleźć.
Chcę przekazywać parametrem metody stringi (np. 'NewClass'), na podstawie których będę tworzyć obiekty (np. $object = new NewClassModel()). Potem chcę te obiekty zwracać (return $object). Chodzi o to, aby to było uniwersalne. Jak to prosto zrobić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) ![]() ![]() |
Chciałem zrobić odwołania do modelu podobnie, jak jest w Symfony. Np. coś w tym stylu:
Kod $sr = $model->getRepository('Site'); $sr->setMethod($id, $varible); Ale właśnie zauważyłem, że to nie jest najlepsze rozwiązanie. W Symfony jest używany menadżer: Kod $em = $this->getDoctrine()->getManager(); $em->getRepository('App:Site')->setMethod($id, $varible); Chodzi mi o to, aby nie wstrzykiwać do kontrolera kilku obiektów z repozytoriami (np. dla UserRepository, SiteRepository oddzielnie), ale aby to zrobić uniwersalnie. Tworzyć jeden obiekt (np. w index.php). Połączyć się z bazą. Wstrzyknąć go do kontrolera i potem używać tego repozytorium, które jest mi akurat potrzebne. Jednak widzę, że tak tego nie zrobię. Prosiłbym o sugestie, jak to zrobić lepiej. (IMG:style_emoticons/default/wink.gif) Podobnie planuję postępować z kontrolerami. W index.php, na podstawie parametru z .htaccess, tworzyć uniwersalnie obiekt kontrolera, który jest mi akurat potrzebny. Przekazywać mu metodą obiekt mojego modelu, tablicę wyników z formularza i sesję. Ok. Wersje robocze klas wyglądają na chwilę obecną tak: Kod <?php declare(strict_types=1); namespace App\Core; use App\Core\Model; class Controller { public function getManager(): object { $model = new Model(); $model->dbConnect(); return $model; } } Kod <?php declare(strict_types=1); namespace App\Core; use App\Core\DataBase; class Model extends DataBase { public function getRepository(string $name): object { $class = $name . 'Repository'; return new $class; } } Kontrolery mają rozszerzać klasę Controller. Przykładowe użycie: Kod $mm = $this->getManager(); $mm->getRepository('Site')->setMethod($id, $variable); $variable = $mm->getRepository('Site')->getMethod($id); Może tak pozostać? Prosiłbym o ocenę kodu i uwagi. (IMG:style_emoticons/default/smile.gif) PS Właśnie zauważyłem, że jest jeszcze jedne problem. Da się użyć jakiegoś uniwersalnego "use" dla moich klas z repozytorium? Bo teraz wywali błąd... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 04:08 |