gothye
13.06.2010, 19:14:38
witam ,zaczynam OOP ,i natrafiłem na błąd ,pisze CMS wygląda to tak :
class cms
{
protected
static $is_login = false ;
public function __construct()
{
//podlaczenie do bazy i sprawdzanie sesji
if(self::$is_login == FALSE )
{
core::redirect('admin/login');
}
}
public function __destruct()
{
}
}
class articles extends cms
{
public function __construct()
{
parent::__construct();
}
public function action_index()
{
}
public function __destruct()
{
}
}
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
13.06.2010, 19:38:41
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
13.06.2010, 20:19:16
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
13.06.2010, 20:47:57
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
14.06.2010, 05:58:09
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
14.06.2010, 07:58:10
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
14.06.2010, 08:00:34
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

to tak na marginesie.
nospor
14.06.2010, 08:02:16
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
14.06.2010, 10:27:07
nospor mogę prosic o przykład z kontrolerem ?
nospor
14.06.2010, 10:29:14
Jak juz pisałem nie uzywam kohany więc ci nie pomogę
gothye
14.06.2010, 13:47:16
załapałem z tym controller

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
14.06.2010, 13:52:10
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
14.06.2010, 13:55:22
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
phpion
14.06.2010, 13:57:29
Sugeruję lekurę:
-
modele-
haki +
zdarzenia
gothye
15.06.2010, 18:08:41
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.