![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam problem otóż czytałem na stronie http://webcity.pl/webcity/programowanie_ob...e_w_php_5_cz__3
Rozumiem co to są obiekt,klasy,dziedziczenie ale Itelator to dla mnie czarna magia ponieważ niewiem jak to działa: Chodzi mi o przykładowo jak to działa:-( CZy to wszystko się automatycznie uruchamia gdy utworze obiekt klasy iteratora? Czy tylko się uruchamia gdy wywołam pętle foreach jak w przykładzie.Kiedy się uruchami Iterator? kiedy uruchamiają się w nim metody? Czy te funkcje next() ,current() są wymyślone? czy są wbudowane w iterator? <?php class nasz_iterator implements Iterator{ private $i; private $obj; public function __construct($obiekt){ $this -> obj = $obiekt; $this -> i = 0; } // end __construct(); public function rewind(){ $this -> i = 0; } // end rewind(); public function valid(){ return $this -> obj -> key_exists($this -> i); } // end valid(); public function key(){ return $this -> i; } // end key(); public function current(){ return $this -> obj -> get_item($this -> i); } // end current(); public function next(){ $this -> i++; } // end next(); } class x_file implements IteratorAggregate{ protected $plik; public function __construct($plik){ if(file_exists($plik)){ $this -> plik = file($plik); }else{ $this -> plik = array(0 => ''); } } // end __construct(); public function getIterator(){ return new nasz_iterator($this); } // end getIterator(); public function get_item($i){ return trim($this -> plik[$i]); } // end get_item(); public function key_exists($i){ return isset($this -> plik[$i]); } // end key_exists(); } class x_list extends x_file{ public function __construct(){ $this -> plik = array(); } // end __construct(); public function add($item){ $this -> plik[] = $item; return count($this -> plik) - 1; } // end add(); } $plix = new x_file('test.txt'); foreach($plix as $lnum => $linia){ echo $lnum.' - '.$linia.'<br/>'; } $lista = new x_list; $lista -> add('pozycja 1'); $lista -> add('pozycja 2'); $lista -> add('pozycja 3'); echo '<br/>'; foreach($lista as $id => $pozycja){ echo $id.' - '.$pozycja.'<br/>'; } ?> Czy to sie po koleji uruchamia? Czy te funkcje next() ,current() są wymyślone? czy są wbudowane w iterator? Ten post edytował szypi1989 14.09.2010, 10:07:05 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze jak chcesz pomocy, wrzuć to w tagi odpowiednie bo nie będzie nikt tego czytał w przeciwnym wypadku.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
4. Rozumiesz w ogóle obiektówkę?
5. http://pl.wikibooks.org/wiki/PHP/Iteratory |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
@szypi1989 - Proszę dodać BBcode.
Fifi - nie baw się w moda tylko raportuj. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Piszę publicznie, bo lekko mnie zirytowała postawa Spawnma (czy raczej powinienem napisać: moderatora).
Gdzie fifi209 bawił się niby w moderatora? Zwrócił uwagę na pewne nieestetyczne i szkodzące samemu autorowi "zachowanie", czyli zrobił dokładnie to samo co Ty - w dodatku zrobił to o kilka godzin wcześniej (to chyba dobrze). Nie wykrzykiwał, nie kazał przenieść wątku, nie groził zamknięciem, nie robił niczego "moderatorskiego". Żeby dalej nie przedłużać OTa prosiłbym by albo ten zarzut wydzielić do osobnego wątku, albo odpisać na PW - jeżeli będzie taka konieczność. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Chodzi o to zeby moc pracowac na obiektach jak na kolekcjach, cos jak petla forech.Nie wiem jak ci to wytlumaczyc.
Np w python'ie petla for ma wbudowane iteratory, a w generatorach mozesz jawnie wywolywac iteratory takie jak next() czy send(). |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 0 Dołączył: 7.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
rozumiem obiektówke.dobra juz wiem jak ten iterator działa
i do czego służy Ten post edytował szypi1989 15.09.2010, 15:38:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 02:10 |