Je suis entrain de tester ce qu"il est possible de faire avec les objects du style ITERATOR.
Ce n'est pas mal mais ce serait bcp mieux si on pouvait (et à mon avis on peut...) passer une "user function" comme paramètre.

Voici mon test:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
class myIterator implements Iterator
{	private $start, $end ;

	public function __construct( $start, $end )
	{	$this->curr = $this->start = $start ;
		$this->end  = $end ;
	}
/**
* Iterator methods
*
*/	
	function rewind() {
		$this->curr = $this->start ;
	}
	
	function key() {
		return($this->curr) ;
	}
	
	function current() {
		return(pow($this->curr,2)) ;
	}
	
	function next() {
		if ($this->valid())
			$this->curr++ ;
	}
	
	function valid() {
		return( ($this->curr <= $this->end) ? true : false ) ; 
	}
		
/**
* End of Iterator methods
*
*/
}

$array = new myIterator( 10, 15 );

while($array->valid() )
{	print("the power of " . $array->key() . " is " . $array->current() . "<br>\n") ;
	$array->next() ;
}
?>
Que manque t'il pour qu'on puisse faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function myFunction()
{    N"importe quoi   }

$array = new myIterator( 10, 15 , myFunction);
il faut au moins passer la fonction comme paramètre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public function __construct( $start, $end, myFunction() )

Afin que la méthode currrent devienne:


	function current() {
		return(myFunction())) ;
	}
Je cherche - mal sans doute - et donc, je vous demande un p'tit coup de pouce