![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 0 Dołączył: 30.05.2007 Skąd: Kleszczów Ostrzeżenie: (0%) ![]() ![]() |
Witam, napisałem sobie klasę SQL do obsługi bazy. Nic nadzwyczajnego. Mam też dwie inne klasy: Extenstion (ładuje mi klasy rozszerzeń) i klasę Auth (klasa z autoryzacja uzytkownika). Na czym polega problem? Nie umiem się w klasie Auth odwołać do bazy danych. Podam kod i może będzie jaśniej:
Część kalsy SQL
Klasa extension
i klasa AUTH (jej część)
Nie wiem w jaki sposób odwołać sie w metodzie login do bazy danych. Próbowałem poprzez $this->db->setSql(), przez $db->setSql(), setSql i nic, dostaję komunikat Kod Call to a member function set_sql() on a non-object inobject Co robię źle? Widziałem podobny mechanizm u kumpla, ale on siedzi w wojsku i nie ma mi jak wyjaśnić co zrobił :/ Ten post edytował rasgan 13.07.2007, 10:39:04 -------------------- Szczęścia w mrokach...
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 5.07.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
parent::NazwaFunkcjiRodzica albo Extension::NazwaFunkcjiRodzica
ale tutaj nie widze czegos takiego jak: set_sql() -------------------- agencja interaktywna poznań
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 0 Dołączył: 30.05.2007 Skąd: Kleszczów Ostrzeżenie: (0%) ![]() ![]() |
Nie ma setSql bo nie wkleiłem
![]() ![]() dam jeszcze raz co mam i co chcę osiągnąć:
Jak zrobić, by można było w taki sposób odwoływać się do tych rzeczy? Kumpel ma tak, że sobie utworzył jeden obiekt $strona i na nim wykonuje metody np:
Coś takiego chciałbym osiągnąć, bo uważam, ze nieźle to działa, sprawdza się i przyzwyczaiłem się do tego, ale muszę dopisać kilka swoich rzeczy, a nie wiem jak je później wykorzystać w jego mechaniźmie. W moim własnym, też by mi się przydało coś takiego. -------- -EDIT- -------- Zauważyłem, że jak dam w klasie AUTH w konstruktorze linijkę to wtedy działa idealnie, ale nie moge przecież w każdej klasie pobierać instancji każdej klasy, od tego chce mieć klasę extension w której mi to będzie robił automat. Ten post edytował rasgan 13.07.2007, 13:32:14 -------------------- Szczęścia w mrokach...
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Ja proponuję takie rozwiązanie:
Obiekty przechowywane są w zmiennej statycznej klasy Extension, więc nie są one gubione przy tworzeniu nowych obiektów tej klasy. Mankamenty: - Klasa Extension nie może mieć zmiennej publicznej o nazwie identycznej, jak nazwa którejś z twoich klas (chociaż nie wiem czy będziesz potrzebował jakiekolwiek zmienne publiczne w klasie Extension) - Brak możliwości przekazania parametrów do konstruktora wywoływanej klasy. Można to uzyskać przez zamianę magicznej metody __get() na magiczną metodę __call(), a następnie obiekty tworzyć przy użyciu eval" title="Zobacz w manualu PHP" target="_manual - jednak takie rozwiązanie mi się osobiście nie podoba. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 0 Dołączył: 30.05.2007 Skąd: Kleszczów Ostrzeżenie: (0%) ![]() ![]() |
Kicok, dziękuję ślicznie. Właśnie o coś takiego mi chodziło.
Ja siedziałem też nad problemem trochę w sobotę i znalazłem takie rozwiązanie:
------ EDIT ------ Po krótkich testach doszedłem do wniosku, że Twoje podejście jest bardziej uniwersalne od mojego. Wystarczy, że utworzę sobie swój nowy obiekt typy Extension i już mam dostęp do wszystkich rozszerzeń jakie potrzebuję. A wiesz może jak napisać by ZEND obsługiwał podpowiedzi dla takiej składni? Ten post edytował rasgan 16.07.2007, 08:39:56 -------------------- Szczęścia w mrokach...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:31 |