![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Od pewnego czasu samodzielnie ucze się php, napisałem pewną obszerną strone strukturalnie - działa fajnie ale straszny bałagan w kodzie.. Teraz zaczałem uczyć się oop i mvc, przeczytałem mase teorii, staram się przeglądać przykłady (skrypty phpbb3 czy smf to jakaś porażka z kodu dla mnie..) i poległem na prostych rzeczach, tak prostych, że aż zły jestem ^^ od wczoraj szukam rozwiązania i nie bardzo wiem w co uderzyć.. kod pliku models/config.class.php
i mam problem w klasie config.. wiem że load_config jest kompletnie źle napisane.. wywołanie tego w pliku index.php (później przeniosę to do kontrolera):
wiem, że config::load_config i klasa config wogóle ze sobą nie współgrają i że całość tego to jakiś kompletny bajzel nad którym część z was się uśmieje (IMG:style_emoticons/default/wink.gif) Co chce osiągnąć: zwrócić tabele cms_config w postaci oczywiście tablicy. siedzę nad tym od dłuższej chwili i jedyne co potrafie zrobić to pobieranie tej tabeli wyciągnąć poza klase.. -,- edit: serwer zwraca mi błąd: Fatal error: Call to a member function fetch() on a non-object in /home/forti/domains/arturs.pl/public_html/models/config.class.php on line 30 wiem co on oznacza ale nie mam pojęcia jak to rozgryść inaczej. Ten post edytował Forti 9.09.2014, 10:30:38 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
SELECT * FROM '$tabela'
pomyliłeś ' z ` btw. używanie global dla uzyskania połączenia z bazą, to zło. Model powinien dziedziczyć klasę do połączenia z db, albo napisz statyczną metodę to wzięcia obiektu pdo, np. Db::get() Ten post edytował Turson 9.09.2014, 10:34:20 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Robisz straszmie duzo bledow. Polecam ci zapoznanie się z tym linkiem
Temat: Jak poprawnie zada pytanie masz tam całą masę pożytecznych wskazówek, w tym i wyswietlanie blędów php oraz bazy. ps: zamiast brać się za obiektówkę warto by się wpierw podszkolić trochę jeszcze bardziej z podstaw. ps2: przenosze |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wiem o tym, nospor. Z tym linkiem już dawno się zapoznałem, racja jedynie że zły dział, mój błąd. Pisząc strukturalnie, ucząc się składni itp. (` zamiast ', = zamiast == itp. błędy) będę stać w miejscu. Wole rzucić się w końcu na głęboko wode, mam sporop skryptów napisanych w mvc, oop bez mvc, jednak nie znalazłem tam informacji na ten temat (lub nie patrze dokładnie).
Turson dziękuje za pomoc. Zrobiłem to tak:
Co do global to wiem.. ale nie bardzo rozumiem jeszcze jak to inaczej rozwiązać. Cały czas więcej czytam / szukam / analizuje niż piszę. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Co do bazy, to np. stwórz klasę DbConnection ze statyczną metodą get, która zwraca obiekt pdo.
Jak piszesz ze wzorcem MVC, to model powinien dziedziczyć główny model, a ten klasę bazodanową. @down Przecinki w złych, miejscach (IMG:style_emoticons/default/tongue.gif) Ten post edytował Turson 9.09.2014, 11:21:33 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Skoro uzywasz wyjatkow, do lapania bledow PDO, to ustaw w PDO by PDO rzucalo wyjatkami w czasie bledow. Teraz tego nie robisz, i bledy bazy ci nie lecą.
@Turson czemu model ma dziedziczyc po klasie bazy? Model powinien a i owszem, korzystac z obiektu bazy, ale nie powinien z niego dziedziczyc. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli mówimy o dziedziczeniu w strukturze JakiśModel -> GłownyModel -> KlasaDb, to dziedziczymy KlasaDb, żeby mieć dostęp do obiektu bazy w JakiśModel.
No dobra, nie musi, wystarczy, że GłównyModel ma metodę zwracającą obiekt. Git. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i teraz sobie wyobraz, ze klasa bazy zawsze w konstruktorze generuje połączenie do bazy.
Odpalasz 5 modeli w czasie jednego żądania a przez co odpalasz 5 połączen do bazy. NIe ma to zadnego sensu. Klasa bazy to klasa bazy. Model moze miec dostep do metod klasy bazy poprzez posiadanie jej obiektu. To wystarczy. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Nieee, nie mówię, że konstruktor ma zawsze zwracać nowy obiekt, a ma działać na zasadzie sigletona, jeżeli nie ma obiektu - tworzy nowy.
Suma sumarum, zgodziliśmy się co do jednego. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 06:50 |