Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PDO i współpraca z własnymi klasami
Jawor
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markac
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.02.2005

Ostrzeżenie: (10%)
X----


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

  1. <?php
  2.    function __autoload($class_name)
  3.    {
  4.        //class directories
  5.        $directorys = array(
  6.            'classes/',
  7.            'classes/otherclasses/',
  8.            'classes2/',
  9.            'module1/classes/'
  10.        );
  11.      
  12.        //for each directory
  13.        foreach($directorys as $directory)
  14.        {
  15.            //see if the file exsists
  16.            if(file_exists($directory.$class_name . '.php'))
  17.            {
  18.                require_once($directory.$class_name . '.php');
  19.                //only require the class once, so quit after to save effort (if you got more, then name them something else
  20.                return;
  21.            }          
  22.        }
  23.    }
  24. ?>


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
Go to the top of the page
+Quote Post
starach
post
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

Ostrzeżenie: (0%)
-----


Cytat(markac @ 3.12.2008, 09:23:38 ) *
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ą.
  1. <?php
  2. $ob = Instance::Get('library.template.cache.data.package.collection');
  3. ?>
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.

Cytat(markac @ 3.12.2008, 09:23:38 ) *
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
Go to the top of the page
+Quote Post
Black-Berry
post
Post #4





Grupa: Zarejestrowani
Postów: 663
Pomógł: 6
Dołączył: 3.06.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat(orglee @ 3.12.2008, 16:52:57 ) *
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ś:

  1. <?php
  2. $ob = Instance::Get('library.template.cache.data.package.collection');
  3. ?>


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.
Go to the top of the page
+Quote Post

Posty w temacie
- 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   Sorry orglee, ale ja już wolę __autoload. W system...   3.12.2008, 09:23:38
|- - orglee   Cytat(markac @ 3.12.2008, 09:23:38 ) ...   3.12.2008, 16:52:57
|- - markac   Cytat(orglee @ 3.12.2008, 16:52:57 ) ...   3.12.2008, 17:11:47
|- - Black-Berry   Cytat(orglee @ 3.12.2008, 16:52:57 ) ...   4.12.2008, 14:49:57
|- - markac   Cytat(Black-Berry @ 4.12.2008, 14:49...   4.12.2008, 18:52:32
|- - 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


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.12.2025 - 21:10