![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
może chcę za dużo pisząc takie?
czyżby interface nie rozpoznaje metod wstrzykniętych przez trait? Ten post edytował kayman 26.01.2015, 12:33:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat a to wywala błąd Nie uważasz, że informacja jaki błąd mogłaby być pomocna? I co to jest klasa A?
Ten post edytował Crozin 26.01.2015, 12:35:19 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował Pyton_000 26.01.2015, 12:46:16 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Kod string(9) "B1.getC()" Jak widać wszystko w porządku.string(9) "Tr.getC()" string(9) "Tr.getC()" bool(true) bool(true) bool(false) EDIT: Pyton_000 mnie trochę wyprzedził. Ten post edytował Crozin 26.01.2015, 12:47:17 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
a teraz już zgłupiałem, co ma metoda z parenta wspólnego z interface?
Kod Fatal error: Declaration of Framework\Models\Master\MasterModel::setData() must be compatible with Framework\Models\Master\ModelInerface::setData($id) in C:\xampp\htdocs\lpcms\Framework\Models\Master\TableUsers.php on line 18
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To że deklarujesz kontrakt (interfejs) z jednym parametrem a deklarujesz metodę z 3. To jest niezgodność deklaracji z interfejsem.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Masz niekompatybilne sygnatury metod. Nie ma to żadnego związku z interfejsami czy traitsami.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
czyli to jest żle i trzeba by np. inaczej nazwać metodę w parencie
a to dobrze
Ten post edytował kayman 26.01.2015, 14:19:58 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Wykorzystanie magicznego __get() jest raczej złym pomysłem. Dlaczego nie zrobisz zwykłej metody get(), getTableProperty() czy jakkolwiek inaczej nazwanej?
2. Nie wiem co dokładnie chcesz osiągnąć, więc ciężko napisać co byłoby dobrym rozwiązaniem. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
chciałem np takie coś
i analogicznie do wszystkich tabel w bazie danych takie mapowanie do tego np takie konstrukcje incydentalne do poszczególnych tabel
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
setData możesz spokojnie wywalić i dać w konstruktor.
W tym przypadku nie potrzebujesz ogólnie interfejsu. Robisz sobie klasę bazową Model która zastępuje Ci trait i interface (możesz zrobić abstract żeby jej nie instancjować) a poszczególne modele extends Model i wsio. Nie ma co kombinować (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
setData możesz spokojnie wywalić i dać w konstruktor. imo nie -> bo setData jest dla rekordu który istnieje ja widzę to tak
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
dzięki panowie, wiem mniej więcej jak to przebudować by było "do ręki" i nie powielać kodu
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Takie podejście, czyli tzw. ActiveRecord, jest raczej słabym rozwiązaniem. W Google znajdziesz więcej na ten temat.
2. Temat dotyczy na dobra sprawę ORM-a. Pomyśl nad wykorzystaniem Doctrine. Ten post edytował Crozin 27.01.2015, 10:41:55 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Może też użyć lżejszego Eloquent z Laravela, ale nie proponowałem bo stwierdziłem że autor robi to dla sportu (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
nie mam nic przeciwko ORM z prawdziwego zdarzenia jak Doctrine, Propel, chciałam sprawę uprościć na własne potrzeby a przy okazji czegoś się nauczyć
mam wrażenie, że deklaracja klasy odpowiadającej za obsługę jakiejś tabeli w bazie nie wyszła najgorzej a przy wykorzystaniu trait będzie w miarę szybka do napisania i w miarę czytelna |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
W Twoim Przypadku Trait nie jest potrzebny Bo:
- i tak nigdzie go nie wykorzystasz więcej niż w tych Modelach - Musisz dołączać Trait i Interface Lepiej już: - Zostawić interface - Zrobić klasę DbModel implementującą interfejs - Dziedziczyć po DbModel A jeszcze lepiej to dziedziczyć po Fabryce Model dzięki czemu będziesz mógł w bardzo szybki sposób zmienić implementację z BD na File np. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 556 Pomógł: 40 Dołączył: 20.07.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pyton masz racje tylko w ten sposób zaraz napiszę kombajn a nie uproszczę całość a w takim wypadku już chyba lepiej skorzystać z gotowego rozwiązania bo szkoda czasu
btw. inteface można by chyba wywalić stosując trait bo metody i tak są w trait te co potrzeba |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:54 |