Originariamente inviato da daniele_dll
in quel caso non richiami l'evento evitando di complicare la logica, altrimenti ti ritroveresti sempre a lanciare fireEvent
codice:
ver. 0.1, e siceramente stavo già pensando a come poter gestire questa cosa in maniera semplice e non troppo pragmatica. Il mio scopo è di automatizzare il più possibile alcune procedure, scaricando lo sviluppatore dal dovere introdurre codice all' interno dei metodi
per quanto possa concordare con questa massima, certe cose, personalmente, preferisco non automatizzarle perché permettono di seguire il filo logico del software
prova questo.. l'evento si rimuove da solo
Codice PHP:
class test{
private $value=0;
public function __construct(){
$this->events=new events($this);
}
public function counter($start){
for($x=$start; $x < 20;$x++){
$this->value=$x;
echo "from ".__FUNCTION__." in_class = ".$this->value."
";
$this->events->fireEvent(__FUNCTION__,$this->value);
}
}
}
$NUM=16;
$test=new test;
$testimone=function ($in_class) use (&$NUM,&$test){
if($in_class%$NUM == 0 ){
$test->events->removeEvent('counter');
}
echo "from ".__FUNCTION__." in_class = $in_class e NUM= $NUM in
";
};
$test->events->addEvent('counter',$testimone);
$test->counter(1);
tengo a precisare per tutti che questi sono CONTORSIONISMI del codice che possono mettere a rischio la logica di lettura->esecuzione del codice, e li metto a solo scopo dimostrativo e di sperimentazione.