par
Shadockou » 12 sept. 2007, 19:07
Salut.
Le code suivant issue d'un exemple du bouquin PHP5 concernant l'auto-incrementation
avec l'interface ArrayAcess.
<?php
class tableau implements ArrayAccess{
private $tableau = array();
function offsetExists($index){
return isset($this->tableau[$index]);
}
function &offsetGet($index){
return $this->tableau[$index];
}
function offsetSet($index,$valeur){
return $this->tableau[$index]=$valeur;
}
function offsetUnset($index){
unset ($this->tableau[$index]);
}
}
$tab = new tableau();
if(!isset($tab[42])){
$tab[42]=1;
}
echo ++$tab[42]; //affiche : 2
unset($tab[42]);
?>
M'affiche l'erreur suivante :
Code : Tout sélectionner
Fatal error: Declaration of tableau::offsetGet() must be compatible with that of ArrayAccess::offsetGet()
Ce qui signifie en gros que le renvoie par reference de la function offsetGet n'est pas compatible
avec l'interface ArrayAccess.
Pourtant le livre dit que c'est possible , alors d'ou vient le problème ?
Merci d'avance.
Salut.
Le code suivant issue d'un exemple du bouquin PHP5 concernant l'auto-incrementation
avec l'interface ArrayAcess.
[php]<?php
class tableau implements ArrayAccess{
private $tableau = array();
function offsetExists($index){
return isset($this->tableau[$index]);
}
function &offsetGet($index){
return $this->tableau[$index];
}
function offsetSet($index,$valeur){
return $this->tableau[$index]=$valeur;
}
function offsetUnset($index){
unset ($this->tableau[$index]);
}
}
$tab = new tableau();
if(!isset($tab[42])){
$tab[42]=1;
}
echo ++$tab[42]; //affiche : 2
unset($tab[42]);
?>[/php]
M'affiche l'erreur suivante :[code] Fatal error: Declaration of tableau::offsetGet() must be compatible with that of ArrayAccess::offsetGet() [/code]
Ce qui signifie en gros que le renvoie par reference de la function offsetGet n'est pas compatible
avec l'interface ArrayAccess.
Pourtant le livre dit que c'est possible , alors d'ou vient le problème ?
Merci d'avance.