Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF]Problem w klasie ZEND_DB
webmaster1989
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
VegetaSSJ
post
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).
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 11:12