Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 2 Dołączył: 1.10.2003 Ostrzeżenie: (0%)
|
Witam
Mam pytanie odnośnie współpracy PDO z własnymi klasami. Ktory sposob powinno sie uzywac: 1. Polaczenie z baza poza klasa (wlasna) i przekazywanie do niej obiektu typu PDO. Wszystkie zapytania, operacje na danych z bazy odbywaja sie we wlasnej klasie. 2. Wszystkie operacje zwiazane z baza odbywaja sie poza wlasna klasa (zapytania, pobieranie danych), a do mojej klasy przekazuje juz np. pobrane z bazy dane. Do tej pory caly czas pisalem strukturalnie, ale postanowilem to zmienic i oto pierwszy dylemat jaki napotkalem na swojej drodze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował Jawor 9.11.2008, 16:27:35 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 23.02.2005 Ostrzeżenie: (10%)
|
Sorry orglee, ale ja już wolę __autoload. W systemie nie powinny wystąpić klasy o tych samych nazwach i dlatego ryzyko kolidowania klas spada do minimum. Przykład:
Andrew: 03-Nov-2006 12:26
Mamy w ten sposób także uzupełnianie kodu w Eclipse, oczywiście jeśli zastosujemy odpowiednie tagi dokumentujące same klasy. Co do Registry, chyba Ty to napisałeś, że istnieje możliwość nadpisania? Mylisz się. W takich przypadkach nie stosuje się get() i set(), a odpowiednio nazwane metody, np. getPDO(), getSession(). Mamy w ten sposób załatwione także uzupełnianie kodu i wykluczenie możliwości nadpisania kodu. Samo zastosowanie get i set jest to po prostu lenistwem, niedoświadczeniem i posiadaniem złych nawyków, o dziwo, dotyczy tylko programistów PHP? Ten post edytował markac 3.12.2008, 09:27:06 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%)
|
Sorry orglee, ale ja już wolę __autoload. W systemie nie powinny wystąpić klasy o tych samych nazwach i dlatego ryzyko kolidowania klas spada do minimum. Nie ma możliwości że wystąpią.Kod załaduje plik w katalogu "[projekt_root]/library/Template/Cache/Data/Package/Collection.php" ( wielkość liter nieprzypadkowa ) i utworzy obiekt klasy Template_Cache_Data_Package_Collection lub zwróci go z rejestru jeśli był już utworzony wcześniej. W zmiennych klasowych stosuję nazewnictwo rozróżniające czy dana zmienne jest obiektem czy prymitywem ( $this->counter - obiekt $this->_counter = integer / float / double / etc. ). Mimo to nie wyobrażam sobie żeby nie napisać PHPDoc'owego @var celem lepszej czytelności i przejrzystości. Co do Registry, chyba Ty to napisałeś, że istnieje możliwość nadpisania? Mylisz się. W takich przypadkach nie stosuje się get() i set(), a odpowiednio nazwane metody, np. getPDO(), getSession(). Mamy w ten sposób załatwione także uzupełnianie kodu i wykluczenie możliwości nadpisania kodu. Samo zastosowanie get i set jest to po prostu lenistwem, niedoświadczeniem i posiadaniem złych nawyków, o dziwo, dotyczy tylko programistów PHP? Stosowanie setterów i getterów dla poszczególnych obiektów moim zdaniem nie jest wygodnym rozwiązaniem bo kompletnie burzy intuicyjność frameworka. Jest to coś czego nienawidzę na przykład w Joomli. Różnica między zaproponowanym przez ciebie rozwiązaniem i Jomlowym jest taka, że Joomla ma statyczne gettery w swoim rejestrze. Nazywam to singleton overflow. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Ten post edytował orglee 3.12.2008, 16:56:43 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%)
|
Stosowanie setterów i getterów dla poszczególnych obiektów moim zdaniem nie jest wygodnym rozwiązaniem bo kompletnie burzy intuicyjność frameworka. Jest to coś czego nienawidzę na przykład w Joomli. Różnica między zaproponowanym przez ciebie rozwiązaniem i Jomlowym jest taka, że Joomla ma statyczne gettery w swoim rejestrze. Nazywam to singleton overflow. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Sory trochę zgubiłem się w temacie ale czy stosowanie getterów i setterów jest takie niezbędne do rozwiązania kontekstowego? Przecież wszystko można oprzeć o jakieś dziedziczenie. Gdzieś już tutaj pisałem o tym razem z przykładowym kodem. Każdy obiekt dziedziczący po obiekcie klasy Core_Context automatycznie może ustawiać sobie obiekty wymagane. Jeśli już chcemy wszystko zautomatyzować to poprostu każdy obiekt w naszym frameworku traktujemy jako Core_Object i po krzyku. Takie coś:
Może i jest pomysłowe ale czy istnieje w jakimkolwiek poważnym oprogramowaniu? Wiem, że PHP można różnie traktować ale wydaje mi się że uniwersalne rozwiązania są najlepsze. Nawet jeśli nikt nie ma pracować w przyszłosci na Twoim kodzie tylko ty sam to trzeba dążyć do czegoś co akceptuje większość społeczności programistycznej nie tylko ta z PHP. (Sam mam jeszcze masę nietrafionych rozwiązań w swoim frameworku ale systematycznie je poprawiam. Nie piszę tutaj żeby komuś coś wytykać) Pozdrawiam. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 23.02.2005 Ostrzeżenie: (10%)
|
Sory trochę zgubiłem się w temacie ale czy stosowanie getterów i setterów jest takie niezbędne do rozwiązania kontekstowego? Przecież wszystko można oprzeć o jakieś dziedziczenie. Gdzieś już tutaj pisałem o tym razem z przykładowym kodem. Każdy obiekt dziedziczący po obiekcie klasy Core_Context automatycznie może ustawiać sobie obiekty wymagane. Jeśli już chcemy wszystko zautomatyzować to poprostu każdy obiekt w naszym frameworku traktujemy jako Core_Object i po krzyku. Takie coś: Nie obrażając nikogo, ale nie masz pojęcia o programowaniu obiektowym... Co ma np. wspólnego klasa DB (np. PDO) z klasą powiedzmy Kota? Używając dziedziczenia (Kot dziedziczy po DB), dajesz do zrozumienia, że klasa kota jest klasą rozszerzającą mozliwosci klasy DB, co jest nieprawdą. Do tego pozwalasz używać klasę Kota tak, jakby to była klasa DB... I teraz prosty przykład:
Trochę to dziwne? Rozumiem, że kot może być klasą pochodną klasy Zwierzak, a ten z kolei klasy Ssak, ale nie WTC na miłość boską, chociaz nikt Ci tego nie zabroni (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przepraszam za takie łopatologiczne przykłady, ale nie umiem tłumaczyć. Najlepiej zacząć rozpisywać to w UML, wtedy ujrzysz, że to nie ma sensu. Każdy początkujący programista próbuje wyprowadzać z klasy np. MySQL następne klasy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował markac 4.12.2008, 18:54:05 |
|
|
|
Jawor PDO i współpraca z własnymi klasami 9.11.2008, 16:26:41
LBO Przekazuj obiekt PDO i wykorzystuj go w klasach sł... 9.11.2008, 16:37:47
Jawor Cytat(LBO @ 9.11.2008, 18:37:47 ) S... 9.11.2008, 16:40:46 
Maciekbjw Cytat(Jawor @ 9.11.2008, 16:40:46 ) R... 23.11.2008, 00:20:40
LBO Cytat(Jawor @ 9.11.2008, 16:40:46 ) R... 9.11.2008, 16:47:15
Jawor Ok. Dzieki za pomoc.
Pozdrawiam 9.11.2008, 16:51:35
Black-Berry Z ostatnich testów i odrobiony teoretyzowania wysz... 9.11.2008, 17:31:14
LBO Prędzej
[PHP] pobierz, plaintext <?php$context... 9.11.2008, 17:35:59
Black-Berry A nie tak:
[PHP] pobierz, plaintext <?php$conte... 9.11.2008, 17:43:27
LBO Ja za stopkę aplikacji uważam na przykład ostatni ... 9.11.2008, 17:50:47
Black-Berry Racja. Twoje rozwiązanie jest bardziej eleganckie.... 9.11.2008, 17:57:49
markac Dajcie już spokój z tymi kontekstami i kopiowaniem... 9.11.2008, 20:15:48
LBO Rejestr to tylko niechlujność architektó... 9.11.2008, 20:21:05
Black-Berry Singletony są złe. A poza tym działają wolniej niż... 10.11.2008, 09:45:02
phpion @BlackBerry:
A czy przypadkiem nie jest tak, że co... 10.11.2008, 09:48:23
LBO No i w tym momencie masz z poziomu szablonu dost... 10.11.2008, 09:51:13
markac Tak się składa, że obiekt bazy danych ma być dostę... 10.11.2008, 11:20:28
Black-Berry Dlaczego na miłość Boga kontekst miałby być single... 10.11.2008, 11:23:43
LBO Kto Ci powiedział, że obiekt kontekstu ma być wszę... 10.11.2008, 11:37:02 
markac Cytat(LBO @ 10.11.2008, 11:37:02 ) Kt... 22.11.2008, 18:17:09
xmarcin troche odgrzewam temat, ale przyznam, że cos mnie ... 22.11.2008, 16:26:45
LBO Tak też można, jeżeli nie chcesz by... 22.11.2008, 17:12:06 
xmarcin Cytat(LBO @ 22.11.2008, 17:12:06 ) Ta... 23.11.2008, 12:02:54
LBO Cytat(markac @ 22.11.2008, 18:17:09 )... 22.11.2008, 19:05:02
wlamywacz Dołączę się do tematu. Jak napisać obsługę DB tak ... 22.11.2008, 22:37:05
Mize Przeczytaj cały wątek i potem swój kod.
... 23.11.2008, 00:34:31
Mize To co Ci będzie potrzebne ?
Skąd mamy wiedzieć co ... 24.11.2008, 14:10:57
xmarcin fakt... troche nie sprecyzowalem...
juz nie bede d... 24.11.2008, 23:31:24
wrzasq Ot, i najlepiej jeszcze podciągnijcie pod to walkę... 28.11.2008, 04:50:52
Black-Berry @wrzasq Zgadzam się z tobą. Co byś nei zrobił zaws... 28.11.2008, 17:09:42
orglee Troszkę się zastanawiałem nad tą dyskusją i najpie... 3.12.2008, 03:06:31
dr_bonzo [PHP] pobierz, plaintext <?php// Załaduj plik k... 3.12.2008, 03:24:30
orglee Tak coś właśnie czułem że... 3.12.2008, 03:32:35
dr_bonzo CytatChyba zapamiętasz rozmieszczenie katalogów, p... 3.12.2008, 03:50:18
orglee Heh. Edytowałem post przy użyciu szybkie... 3.12.2008, 04:13:43 
markac Cytat(orglee @ 3.12.2008, 16:52:57 ) ... 3.12.2008, 17:11:47 
markac Cytat(Black-Berry @ 4.12.2008, 14:49... 4.12.2008, 20:30:44
dr_bonzo @orgle: ZS ma, eclipse nie ma, mi wystarczy jak na... 3.12.2008, 10:29:37 
mike Cytat(dr_bonzo @ 3.12.2008, 10:29:37 ... 3.12.2008, 10:48:36
orglee Uhh ależ mi dopiekłeś. Programuje w... 3.12.2008, 20:22:00
erix CytatMoże i jest pomysłowe ale czy istni... 4.12.2008, 17:50:17
Black-Berry Tak ale tam jest to rozwiązanie wbudowane a nie pa... 4.12.2008, 17:58:18
LBO Klasyczny problem
CytatTelefonistka dziedziczy po ... 4.12.2008, 20:04:03
Black-Berry @markac Ja nie mam pojęcia o programowaniu obiekto... 4.12.2008, 20:06:14
Black-Berry Tak, sory literówka. Dalej pisałem o Core_Object. ... 4.12.2008, 20:34:20
dr_bonzo @mike
CytatCytat@orgle: ZS ma, eclipse nie ma, (.... 4.12.2008, 20:35:22
LBO Cytat(Black-Berry @ 4.12.2008, 20:06... 4.12.2008, 20:40:57
Black-Berry @LBO No tak, zgadzam się. Ja cały czas o czymś tak... 4.12.2008, 20:50:49 ![]() ![]() |
|
Aktualny czas: 30.12.2025 - 21:11 |