Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Dlaczego metody fetchRow,fetchAll zwracają obiekt? szczegóły na dole
anonim1989
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 5.01.2011

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


Witam.Od niedawna analizuje kod ZF.I nie mogę jednego pojąć.Otóż mam w ZF taką metode jak fetchAll która zwraca mi wszystkie rekordy z wybranej tabeli.Gdy zaglądam do klasy Zend_Db_Table_Abstract w której znajduje się ta metoda fetchAll.
Zwraca ona obiekt klasy Zend_Db_Table_Rowset,klasy której konstruktor nic nie zwraca.Dlaczego zwraca obiekt?
Przecież powinna mi zwrócić tablice w której znajdują się rekordy?
bardzo proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
anonim1989
post
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 5.01.2011

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


Widocznie czegoś nie rozumiem.Mam taką metoda jak fetchAll.Którą wywołuje w IndexController:
$this->view->albums = $album->fetchAll();

I wiem ze album dziedziczy z Zend_Db_Table.Dlatego sprawdzam czy jest tam metoda FetchAll.Niema jej .Dlatego sprawdzam jego Parent czy posiada tą metoda FetchAll.I posiada a ta metoda wygląda tak:
  1. public function fetchAll($where = null, $order = null, $count = null, $offset = null)
  2. {
  3.  
  4.  
  5. if (!($where instanceof Zend_Db_Table_Select)) {
  6.  
  7. $select = $this->select();
  8. ///SELECT `album`.* FROM `album`
  9.  
  10. if ($where !== null) {
  11. $this->_where($select, $where);
  12.  
  13. }
  14.  
  15. if ($order !== null) {
  16. $this->_order($select, $order);
  17. }
  18.  
  19. if ($count !== null || $offset !== null) {
  20. $select->limit($count, $offset);
  21. }
  22.  
  23. } else {
  24. $select = $where;
  25. }
  26.  
  27. $rows = $this->_fetch($select);
  28.  
  29.  
  30.  
  31. $data = array(
  32. 'table' => $this,
  33. 'data' => $rows,
  34. 'readOnly' => $select->isReadOnly(),
  35. 'rowClass' => $this->getRowClass(),
  36. 'stored' => true
  37. );
  38.  
  39. $rowsetClass = $this->getRowsetClass();
  40. if (!class_exists($rowsetClass)) {
  41. require_once 'Zend/Loader.php';
  42. Zend_Loader::loadClass($rowsetClass);
  43. }
  44. echo $rowsetClass;
  45. return new $rowsetClass($data);
  46. }


I jak widać zwraca utworzony obiekt zmiennej $rowsetClass czyli klasa Zend_Db_Table_Rowset.Która nie zwraca mi nic.Bardzo Proszę mi rozjaśnić o co tu chodzi .Widocznie czegoś tu nie rozumiem.
Go to the top of the page
+Quote Post
vermis
post
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

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


Cytat(anonim1989 @ 7.01.2011, 18:58:50 ) *
Zwraca ona obiekt klasy Zend_Db_Table_Rowset,klasy której konstruktor nic nie zwraca.Dlaczego zwraca obiekt?
...
I jak widać zwraca utworzony obiekt zmiennej $rowsetClass czyli klasa Zend_Db_Table_Rowset.Która nie zwraca mi nic.


A od kiedy konstruktor coś zwraca, a tym bardziej klasa?
Jeżeli tworzysz obiekt przez new to otrzymujesz obiekt tej klasy a nie to co zwraca konstruktor. To są podstawy OOP
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: 12.10.2025 - 21:09