![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Klasa rodzica ma metodę response() i ma ją też trait, niestety sygnatury (i także treść metody są zupełnie różne).
Dziecko dziedziczy po rodzicu i używa trait i powoduje to problem:" Cytat Declaration of Dingo\\Api\\Routing\\Helpers::response() should be compatible with Optimus\\Bruno\\LaravelController::response($data, $statusCode = 200, array $headers = Array) Jak się można domyśleć po przestrzeniach nazw nie mam możliwości ingerencji bezpośrednio w kod tych klas. Da się to jakoś zgrać? Niestety use + insteadof tu nie zadziałało bo można to użyć tylko dla Trait. Ten post edytował markonix 15.12.2017, 01:33:38 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
A możesz trochę więcej szczegółów podać? O co w ogóle chodzi? Dlaczego takie rozwiązanie? Jak to się stało, że masz trait (bo to ty go dodajesz do klasy, jak mniemam), który ma inną sygnaturę niż klasa, w której chcesz go używać?
Jaki problem w ogóle próbujesz rozwiązać? Bo podałeś tylko objawy bez jakiegokolwiek kontekstu. Ten post edytował Xelah 15.12.2017, 11:12:18 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mnie to wygląda jak błąd samych klas i problemu z paczkami.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Mam mój kontroler ApiBaseController który ma dziedziczyć po:
https://github.com/esbenp/bruno/blob/master...lController.php natomiast w moim API korzystam też z biblioteki Dingo, który ma Trait następujący: https://github.com/dingo/api/blob/master/sr...ing/Helpers.php Kontekst jest taki, że korzystam z Dingo, i chciałem dodać "queries" do mojego RESTowego API za pomocą tej małej biblioteki, na którą się składa Trait + BaseController. To są dwie zupełnie osobne biblioteki stąd kolizja. Wprawdzie zrezygnowałem z tej biblioteki LaravelController bo okazało się, że biblioteka do repozytoriów, którą już mam w projekcie świetnie sobie radzi. Problemu więc nie mam ale ciekawość pozostaje czy taki konflikt da się rozwiązać. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 139 Pomógł: 24 Dołączył: 12.05.2013 Skąd: Hamburg Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem pewien, czy w 100% zrozumiałem problem, ale może coś takiego?:
Jeśli dobrze rozumiem co chcesz osiągnąć, to powyższy kod rozwiązuje problem. Kontroler nie używa traita tylko inną klasę. Metody traita są wywoływane pośrednio. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 280 Pomógł: 46 Dołączył: 23.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawy problem, aż musiałem sam sprawdzić jak to można rozwiązać.
Pierwsza rzecz, którą spróbowałem to użycie "as" aby zmienić nazwę metody z traits. Niestety to nie pomogło. Przykład: https://ideone.com/ddRQZO Dodałem własną metodę, która używa metody z klasy abstrakcyjnej i wtedy śmiga poprawnie. Przykład: https://ideone.com/tL0CoG Więc jakieś rozwiązanie jest na to choć nie wygląda na jakieś dobre. Szkoda, że ten pierwszy przykład z samym "as" nie działa. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 02:03 |