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: 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). |
|
|
|
webmaster1989 [ZF]Problem w klasie ZEND_DB 12.10.2010, 19:49:42
R4D3K CytatJak naradzie wszystko rozumiałem choć od nied... 14.10.2010, 13:26:58
webmaster1989 aha.No dobra .tylko nadal jednego nie rozumiem.Dla... 14.10.2010, 17:30:36
luki100011 Tak ogólnie :
Bo zależy jaka klasa łączy się z ba... 15.10.2010, 06:36:30
R4D3K CytatTen już najwyraźniej pozjadał wszystkie rozum... 15.10.2010, 10:39:29
VegetaSSJ Słynna książka o której piszesz moim zdaniem nadaj... 15.10.2010, 14:03:01
webmaster1989 już kumam o co chodzi z tym adapterem.
Sama nazwa ... 15.10.2010, 18:29:42 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 11:12 |