![]() |
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 20:30 |