Je veux étendre par exemple ce RecursiveIterator from the SPL avec la fonction each afin que je puisse facilement marcher sur l'objet/tableauComment passer une variable par référence lors de la création d'un objet en php
class it extends RecursiveArrayIterator {
public function each($function, $args=array()){
$args = (sizeof($args)>0) ? array_merge(array($this),(array)$args) : array($this);
iterator_apply($this, $function, $args);
return $this;
}
}
//Running it:
$it = new it(&$array);
$it->each(function($it){
$it->offsetSet($it->key(), $it->current() + 1);
return true;
});
qui se traduit par:
obsolète: passage par référence Call-temps a été dépréciée en ...
le problème est que je ne peux pas, ou ne devrait pas, utiliser la référence quand creati ng l'objet car il est déprécié. Mais lorsque vous itérez sur le tableau/l'objet que je veux pouvoir modifier, comment puis-je y parvenir sans changer le allow_call_time_pass_reference
en On
? J'utilise wamp avec php 5.3.
Avoir une belle journée
1: http://www.php.net/manual/en/class.recursivearrayiterator.phpin ...
Peut-on utiliser la méthode 'each' lors de l'extension' RecursiveArrayIterator'? J'avais l'impression que vous avez hérité des méthodes précédentes, auquel cas 'each' n'en fait pas partie, selon: http://www.php.net/~helly/php/ext/spl/classRecursiveArrayIterator.html –
@Russell: Vous pouvez non seulement écraser mais aussi ajouter des méthodes dans les classes dérivées (sinon il n'y aurait pas de classe avec plus de méthodes que StdClass, qui a 0 méthodes ;-)) – VolkerK
Désolé, c'était juste un malentendu de ma part. Pour une raison quelconque, je pensais qu'il implémente plutôt que de s'étendre à partir de 'RecursiveArrayIterator'. Merci pour la clarification! –