Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pytanko Obiektowe parent:: polimorfizm?
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Witam,
takie pytanie czy to jest polimorfizm?
Kod
<?php
class Model_Items extends Model_Table
{
    protected $_name     = 'articles';
    protected $_primary = 'i_id';
    
    
    public function insert($data)
    {
        unset($data['Zapisz']);
  
        $itemId = parent::insert($data);
        
        return $itemId;
    }
?>


Kod
<?php
class Model_Table extends Zend_Db_Table_Abstract
{

    public function itemsToRowset($data)
    {
        $db = $this->getAdapter();
        
        $params          = array();
        $params['db']    = $db;
        $params['table'] = $this;
        $params['data']  = $data;

        return new Zend_Db_Table_Rowset($params);
    }
}

?>


Z tego co rozumiem polimorfizm to przesyłanie metod.
Czyli mogę np: z klasy Model_Items odwołać się do metod z klas dziedziczonych?

Jeśli tak nie jest proszę o wytłumaczenie o co chodzi ze składnią parent::?
darko
Nie przesyłanie, a przesłanianie, a cechą polimorfizmu jest możliwość nadpisania metody rodzica przez klasę wyprowadzoną (zmiana zachowania). Natomiast wywołanie parent w klasie dziedziczącej jest odwołaniem się do implementacji metody klasy bazowej (rodzica), po prostu w swojej metodzie wywołujesz kod z metody rodzica, odwrotnie się nie da, tzn. rodzic nigdy nie wie nic o swoim dziecku.
Ilware
W polimorfizmie chodzi bardziej o to że jedna funkcja zależnie od klasy zachowa się w różny sposób :
http://pl.wikipedia.org/wiki/Polimorfizm_%28informatyka%29

parent:: służy do odwołania się do klasy rodzica np

masz funkcję display() znajdującą się w rodzicu, i chcesz ją wykorzystać, ale dopisać do niej powiedzmy 'echo "a";'

  1. public function display(){
  2. parent::display();
  3. echo "a";
  4. }


wtedy wykorzystujesz to co już masz i daje Ci to możliwość rozwinięcia tego smile.gif
cykcykacz
Jeszcze takie pytanie o co chodzi w metodzie itemsToRowset a dokładnie nie rozumiem tej linijki kodu return new Zend_Db_Table_Rowset($params);?
Kod
<?php
class Model_Table extends Zend_Db_Table_Abstract
{

    public function itemsToRowset($data)
    {
        $db = $this->getAdapter();
        
        $params          = array();
        $params['db']    = $db;
        $params['table'] = $this;
        $params['data']  = $data;

        return new Zend_Db_Table_Rowset($params);
    }
}

?>


Z tego co przypuszczam przekazuje parametry do obiektu klasy Zend_Db_Table_Rowset?

Czyli łączenie do bazy danych, tabela, dane?
Tak?
Ilware
Takie coś

  1. <?php
  2. class Model_Table extends Zend_Db_Table_Abstract
  3. {
  4.  
  5. public function itemsToRowset($data)
  6. {
  7. $db = $this->getAdapter();
  8. $params = array(
  9. 'db' =>$db,
  10. 'table' => $this,
  11. 'data' => $data
  12. );
  13. return new Zend_Db_Table_Rowset($params);
  14. }
  15. }


zwróci Ci w wyniku referencje do obiektu Zend_Db_Table_Rowset , który pobiera z tabeli konkretne pola przekazane w $data
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.