Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]Dlaczego po utworzeniu obiektu Zend_Db_Table_Select zwraca mi zamiast obiektu co innego ?
szypi1989
post
Post #1





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2010

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


Sprawdzam klase w Zend_Frameworku. I mam taką metodę w klasie Zend_Db_Table_Abstract o nazwie 'select'.Która ma zawratość :
  1. public function select($withFromPart = self::SELECT_WITHOUT_FROM_PART)
  2. {
  3.  
  4. require_once 'Zend/Db/Table/Select.php';
  5. $select = new Zend_Db_Table_Select($this);
  6. if ($withFromPart == self::SELECT_WITH_FROM_PART) {
  7.  
  8. $select->from($this->info(self::NAME), Zend_Db_Table_Select::SQL_WILDCARD, $this->info(self::SCHEMA));
  9.  
  10.  
  11. }
  12.  
  13. return $select;
  14. }


I zwraca mi taki ciąg znaków " SELECT `album`.* FROM `album` " zamiast obiektu .Sprawdzałem za pomocą instrukcji echo.O co tu chodzi? proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
singles
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Zend_Db_Table_Select to praktycznie taki QueryBuilder.

A dlaczego zastosowanie echo zwraca Ci stringa, zamiast obiektu? Zend_Db_Table_Select posiada metodę assemble() (która nadpisuje metodę klasy bazowej - patrz niżej), która "wypluwa" normalne zapytanie SQL.
Zend_Db_Table_Select dziedziczy po Zend_Db_Select, który to posiada implementację magicznej metody __toString():
  1. public function __toString()
  2. {
  3. try {
  4. $sql = $this->assemble();
  5. } catch (Exception $e) {
  6. trigger_error($e->getMessage(), E_USER_WARNING);
  7. $sql = '';
  8. }
  9. return (string)$sql;
  10. }


W momencie, kiedy robisz echo $select, wywoływane jest __toString(), czyli praktycznie assemble().

Chcesz, żeby Ci zrzuciło obiekt, to skorzystaj z var_dump albo print_r albo wbudowanego w Zenda: Zend_Debug::dump() (taki var_dump na sterydach).
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: 14.10.2025 - 05:50