Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pytanko Obiektowe parent:: polimorfizm?
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


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::?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Ilware
post
Post #3





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


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


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
cykcykacz
post
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


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?
Go to the top of the page
+Quote Post
Ilware
post
Post #5





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


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

Ten post edytował Ilware 12.01.2012, 22:53:09


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:11