Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana]zalątki OOP i problem
Forum PHP.pl > Forum > PHP > Frameworki
gothye
witam ,zaczynam OOP ,i natrafiłem na błąd ,pisze CMS wygląda to tak :

  1. class cms
  2. {
  3.  
  4. protected static $is_login = false ;
  5.  
  6. public function __construct()
  7. {
  8. //podlaczenie do bazy i sprawdzanie sesji
  9.  
  10. if(self::$is_login == FALSE )
  11. {
  12. core::redirect('admin/login');
  13. }
  14.  
  15. }
  16.  
  17. public function __destruct()
  18. {
  19.  
  20. }
  21. }
  22.  
  23. class articles extends cms
  24. {
  25. public function __construct()
  26. {
  27. parent::__construct();
  28. }
  29.  
  30. public function action_index()
  31. {
  32.  
  33. }
  34.  
  35. public function __destruct()
  36. {
  37.  
  38. }
  39. }


Oczywiście klasa articles jest uruchamiana osobno ,czy za każdym razem (tworząc kolejne klasy ) , musze konstruktor rodzica uruchamiać ?
Czy jest inne rozwiazanie ?
Crozin
OK, najpierw trochę zrzędzenia, bo aż się niedobrze robi jak się czyta Twój post:
1) Odstęp dajemy po znakach interpunkcyjnych, a nie przed nimi. Zadania rozpoczynamy wielką literą,
2) Kropka - taki znaczek też istnieje,
3) Popracuj trochę nad składnią swoich wypowiedzi bo teraz to jest jakieś Kali jeść, Kali pić,
4) konstrucktor - chyba konstruktor?

A teraz wracając do tematu:
1) Źle używasz dziedziczenia. Co ma wspólnego Articles z CMS? W jaki sposób to pierwsze może być potraktowane jako bardziej wyspecjalizowana forma ostatniego? Innymi słowy Articles nie powinno dziedziczyć po CMS.
2) Jeżeli w definicji klasy nie podasz konstruktora to zostanie domyślnie wywołany konstruktor klasy nadrzędnej (tak samo jak w przypadku zwykłych metod). W przypadku, gdy dana klasa jest na szczycie hierarchii i nie ma zadeklarowanego konstruktora na dobrą sprawę nic się nie stanie. Efekt, będzie taki sam jakbyś miał po prostu posty konstruktor.
gothye
za ortografie przepraszam
niewiem czy dobrze pomyślałem ,chciałem wykonać klasę główną (cms) i potem kolejne klasy jak np articles ,gdzie klasa będzie dziedziczyła po klasie cms status czy user jesr zalogowany itp ,a potem tylko zajmowała sie listowaniem artykułów z bazy i dodawaniem / edycją istniejących ... czy takie rozwiązanie bedzie w porządku ? jeśli nie proszę o uwagi
Crozin
Cytat
za ortografie przepraszam
Nie pisałem tego byś przepraszał tylko żebyś to poprawił - niestety widzę, że z mizernym skutkiem.

Od takich rzeczy jak sprawdzanie czy użytkownik jest zalogowany czy nie powinien być - czy raczej może być - obiekt reprezentujący użytkownika. Obiekt Articles nie powinien dziedziczyć po jakimś CMS, bo pomiędzy takim czymś (chociaż ciężko w ogóle ustalić czym to ostatnie ma być) nie zachodzi żadna bezpośrednia relacja. Articles może wykorzystywać takie obiekty jak np. "użytkownik", ale się z nich nie wywodzi.
gothye
nie napisałem na początku , framework to kohana 2.*
ok ,więc napiszę klasę do autoryzacji usera ,ale chcąć rodzielic kolejne elementy cms , jak np sondy / dodawanie stron , i rozbicie tego na osobne klasy , istnieje mozliwość aby w kazdej znich nie dopisywać warunku sprawdzającego status zalogowanego użytkownika ?
nospor
Cytat
istnieje mozliwość aby w kazdej znich nie dopisywać warunku sprawdzającego status zalogowanego użytkownika
Tak na dobrą sprawę to sprawdzanie zalogowanie uzytkownika należy robić na poziomie kontrolera a nie na poziomie klasy modelu.
Zapewne kohana ma przewidziane metody na tę okazję - w koncu tak ją zachwalają jako jeden z lepszych frameworków - osobiście nie jestem nic więcej na ten temat powiedzieć, gdyż kohany nie używam
phpion
Cytat(nospor @ 14.06.2010, 08:58:10 ) *
Tak na dobrą sprawę to sprawdzanie zalogowanie uzytkownika należy robić na poziomie kontrolera a nie na poziomie klasy modelu.
Zapewne kohana ma przewidziane metody na tę okazję - w koncu tak ją zachwalają jako jeden z lepszych frameworków - osobiście nie jestem nic więcej na ten temat powiedzieć, gdyż kohany nie używam

Można to zrobić na poziomie kontrolera, ale lepiej zrobić to w hooku smile.gif to tak na marginesie.
nospor
No przepraszam, faktycznie źle się wyraziłem. chodziło mi ogólnie, że nie model, a coś wczesniejszego.
przykładowo w ZF robi się to na poziomie pluginu
gothye
nospor mogę prosic o przykład z kontrolerem ?
nospor
Jak juz pisałem nie uzywam kohany więc ci nie pomogę smile.gif
gothye
załapałem z tym controller winksmiley.jpg pozostaje tylko kolejne pytanie ,jak utworze połączenie do SQL w controller to jak współdzielic je między modułami , przez przekazanie obiektu bazy w __construct modułu ?
phpion
Cytat(gothye @ 14.06.2010, 14:47:16 ) *
jak utworze połączenie do SQL w controller to jak współdzielic je między modułami

Zapomnij. Nie należy odwoływać się do bazy danych bezpośrednio w kontrolerach - od tego masz modele. W modelu operujesz na bazie danych (pobieranie + modyfikacja danych), a w kontrolerze tylko odwołujesz się do modeli.
gothye
czyli tworząc kolejne modele ,w każdym musze łączyc sie z osobna z bazą ? , tego własnie chciałem uniknąć przy sprawdzaniu i autoryzacji usera z pierwszego postu ... aby miec w jednym miejscu to sad.gif
phpion
Sugeruję lekurę:
- modele
- haki + zdarzenia
gothye
phpion ok w modelu _parent łącze się z bazą , tworze model potomny auth w którym sprawdzam czy user jest zalogowany , a potem przekazuje dane do kontrolera ,dobrze ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.