Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [LARAVEL] Blank page przy wzajemnym DI
markonix
post 18.04.2017, 23:51:34
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Generalnie problem podobny, ale i taki sam jak tu:
http://stackoverflow.com/questions/2242246...uses-blank-page
ale niestety nie ma tam żadnej propozycji. Minęło troszkę czasu ale problem jak widać nadal występuje.

W skrócie - mamy 2 repozytoria.
Wstrzykuje jedno repo do drugiego przez konstruktor i wszystko działa.
Robię odwrotnie i biała strona, null, zero błędów, żadnych logów nie tworzy.

Próbowałem też z:
  1. $this->app->make

i ten sam efekt :/


--------------------
Go to the top of the page
+Quote Post
r4xz
post 19.04.2017, 09:29:16
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


Jesteś w stanie stworzyć prosty przykład i opublikować kod? Problem wydaje się być co najmniej dziwny, jedyne co mi przychodzi do głowy to spytać czy określiłeś jaką klasę DI ma wstrzykiwać w ramach tego interfejsu?


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 19.04.2017, 10:08:59
Post #3





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

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


Strzelam że chodzi o loop. Wstrzykując na wzajem klasy do konstruktora przechodzi proces od nowa. Jedynym wyjściem jest uniknięcie takich sytuacji dołączania klas siebie na wzajem. Sprawdź czy jednak nie dasz rady tego wyeliminować.
Go to the top of the page
+Quote Post
markonix
post 19.04.2017, 13:53:11
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


To co Pyton_000 proponuje też mi się wydaje najbardziej prawdopodobne. Wywołują się konstruktory wzajemnie i wywala skrypt bez żadnego śladu w logach.

Problem muszę widocznie rozwiązać na poziomie logiki biznesowej aniżeli kodu (bo co tu próbować kombinować, wywołać metodę bez ładowania klasy...).

Korzystam z https://github.com/andersao/l5-repository
Mam 2 repozytoria dla dwóch modeli w relacji.
W jednym REPO dodaje z formularza Klasę i Uczniów. Repo uczestników wstrzykuję i dodaje bezpośrednio ich z poziomu Repo Klasa.
No i teraz np. dodaj samego Ucznia i chciałbym wstrzyknąć REPO Klasy aby np. zaktualizować kolumnę z liczbą osób w klasie.
Jest na to jakiś pattern, może repozytoria nie powinny od siebie wzajemnie zależeć?




Jednym z działający rozwiązań jest przekazanie REPO przez parametr metody (argument $this).
I potem w metodzie $repo->
Ale słabo to wygląda, faktycznie muszę te repozytoria przemyśleć na nowo albo dodać jeszcze jedna warstwę np. coś w stylu Services (choć na razie tego unikam bo póki co same repozytoria mi czasem sprawiają problemy logiczne - gdy się głowię co umieścić w modelu, a co w repo więc dodanie kolejnego stopnia na razie odkładam).

Ten post edytował markonix 19.04.2017, 13:53:56


--------------------
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: 21.06.2025 - 19:37