Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> iterator .co to jest? jak to działa
szypi1989
post
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
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: 18.09.2025 - 20:30