![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 31.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam .Mam problem .Otóż analizuje sobie niektóre klasy w ZendFramowork .Jak naradzie wszystko rozumiałem choć od niedawna uczyłem się obiektówki.Dla przykładu funkcja "query" (w klasie zend_db_adapter_abstract) odpala mi metode connect -kod :$this->_connect();
A w metoda _connect wygląda tak: abstract protected function _connect(); A w niej nic niema.To po co ten kod?jak niema rozszerzenia klasy akurat w tym kodzie.Poprostu nierozumiem o co tu biega. Rozumiem gdybym dla przykładu zrobił tak: $db2=new zend_db_adapter_db2; $db2->connect(); to by mi się właczyła metoda dziedzicznej klasy db2. Ale w tym kodzie jest this->connect().A z tego co wiem nie można wywoływać metody abstrakcyjnej .nie rozumiem tego kodu. Wiem że klasy które rozszerzają metode abstract protected function _connect(); są w folderze zend/db/adapter tylko nie wiem która akurat jest włączana w $this->connect. Proszę o pomoc. Ten post edytował webmaster1989 13.10.2010, 16:51:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak naradzie wszystko rozumiałem choć od niedawna uczyłem się obiektówki. To trochę się nie douczyłeś .... Wiesz obczajanie frameworka dla kogoś kto dopiero "obczaja obiektówkę" jest ja kazanie 1 klasiście pisać egzamin maturalny i to rozszerzony. Cytat (w klasie zend_db_adapter_abstract) odpala mi metode connect -kod :$this->_connect(); [...] A w niej nic niema.To po co ten kod? Poczytaj o klasach abstrakcyjnych, lub o tak zwanych wzorcach projektowych i dowiesz się jak ze sobą "łączyć" klasy, żeby powstała aplikacja. Ale najpierw polecam zapoznanie Ci się z 3 filarami obiektowości. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Kolego @webmaster1989 nie przejmuj się postem kolegi @R4D3K. Ten już najwyraźniej pozjadał wszystkie rozumy i nic wartościowego poza wytknięciem ci braku wiedzy do tematu wnieść nie może.
Sprawa z klasami abstrakcyjnymi wygląda tak że nie możesz utworzyć instancji obiektu z takiej klasy. W prostym przekładzie nie możesz zrobić tak: $adapter = new Zend_Db_Adapter_Abstract(). Jeżeli chcesz korzystać z takiej klasy musisz napisać własną klasę która dziedziczy po Zend_Db_Adapter_Abstract, ewentualnie skorzystać z jednej z dostępnych już klas w ZF. Tak więc metoda connect która cię interesuje znajduje się rzeczywiście w innej klasie. Np masz klasę Zend_Db_Adapter_Pdo_Mysql do połączeń PDO z Mysql. Klasa ta dziedziczy pośrednio z Zend_Db_Adapter_Abstract, pośrednio bo między nimi jest jeszcze Zend_Db_Adapter_Pdo_Abstract. Jak się przyjrzysz to zobaczysz Zend_Db_Adapter_Pdo_Mysql jest metoda _connect() która implementuje jakąś tam logikę, a następnie wywołuje parent::_connect(), czyli metodę o takiej samej nazwie na obiekcie rodzica - Zend_Db_Adapter_Pdo_Mysql gdzie już masz konkretny kod łączący z bazą danych. To by było na tyle, i pamiętaj że kto pyta nie błądzi raz że nie ma głupich pytań - są za to głupie odpowiedzi (@R4D3K). |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 31.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
aha.No dobra .tylko nadal jednego nie rozumiem.Dlaczego akurat mi się włącza metoda connect w Zend_Db_Adapter_Pdo_Mysql .Skoro także mam connect w klasie Zend_Db_Adapter_Pdo_Pgsql która także dziedziczy pośrednio z Zend_Db_Adapter_Abstract. a w kodzie jest this->connect .czyli nie wiadomo jaka klasa.I tego nie rozumiem.Proszę o wytłumaczenie z góry dziękuje
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 20 Dołączył: 20.04.2004 Skąd: Wielkopolska Ostrzeżenie: (0%) ![]() ![]() |
Tak ogólnie :
Bo zależy jaka klasa łączy się z bazą gdzieś definiujesz czy łączysz się przez pdo_mysql czy pdo_pgsql i wtedy startuje albo Zend_Db_Adapter_Pdo_Pgsql albo Zend_Db_Adapter_Pdo_Mysql które dziedziczą po klasach abstrakcyjnych |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ten już najwyraźniej pozjadał wszystkie rozumy i nic wartościowego poza wytknięciem ci braku wiedzy do tematu wnieść nie może Akurat nie zładem i sam jeszcze dużo nie wiem, ale bez przesady to jest prawie że elementarna wiedza, o której można przeczytać długie artykuły i prawie wszystkie książki i ebooki o tym bębnią i jest to lepiej i dokładniej wytłumaczone niż ty to opisałeś w paru linijkach, natomiast nic nie wspomniałeś o wzorcu projektowym adapter, o który podejrzewam mu chodziło , tylko nie wiedział ja to nazwać. Nie będę tu się o nim rozpisywał, ponieważ wpisując na google hasło: "wzorzec adapter" znajdzie Cytat Około 19,000 wyników (0,18 s) I uważam że nie ma sensu tu kopiować tych tekstów, a wyjaśnienie w 2 - 3 zdaniach o co tutaj chodzi dla kogoś , kto dopiero "obczaja obiektówkę" podejrzewam że, nie przyniesie takiego skutku jak zapoznania się chodziarz z jednym z artykułów. Jeśli chodzi o mnie to ja polecam koledze webmaster1989 zapoznania się z jakaś książką na temat programowania obiektowego w PHP, gdzie na przykład i z dokładnym wyjaśnieniem na pewno dowie się na temat upragnionej klasy abstrakcyjnej, jak i wieli innych pożytecznych rzeczy. Gdy dalej zechcesz zdobywać wiedzę w zakresie inżynierii programowania to polecam słynną książkę "Bandy Czworga", gdzie znajdziesz istną kopalnie wiedzy na temat wzorców projektowych wraz z przykładami ich użycia. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Słynna książka o której piszesz moim zdaniem nadaje się dla ludzi którzy już jakieś doświadczenie maja. Doświadczenie zbiera się siedząc i analizując kod - praktyka w programowaniu jest niezastąpiona. Kolega ma bardzo dobre podejście, nie ma podstaw ale rzuca się na głęboką wodę - dzięki temu szybciej się nauczy pływać (chyba że się zniechęci). Książki takie jak ta którą polecasz są fajne kiedy napotykasz jakiś ciekawy fragment kodu - analizujesz go i zyskujesz podstawowe wyobrażenie jak to działa - wtedy dobrze jest zajrzeć do książki która rozszerzy Twoją wiedzę i rozjaśni to czego nie zrozumiałeś.
Czytanie o wzorcu nie macając jego kodu jest bez sensu. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 31.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
już kumam o co chodzi z tym adapterem.
Sama nazwa mówi.Dopiero się ucze ,jestem nowicjuszem.Mam nadzieje że kiedyś będzie inaczej.Przede mną jeszcze bardzo dużo nauki. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:42 |