$x
в методе является локальной переменной.
Так что каждый раз, когда вы звоните recursion()
, $x
является совершенно новым. Поэтому после $x++
оно будет иметь значение 1
.
private $x = 0;
public function recursion(){
$a = 0;
do{
$a++;
echo "$a \n";
sleep(1);
echo date('h:i:s') . "\n";
}while($a < 5);
$this->x++;
echo "** {$this->x} **\n";
while($this->x <= 5){
echo "Going back to my method $this->x times \n";
$this->recursion(); // I'd like to loop this method X times
}
}
Кстати, поскольку это хвостовая рекурсия. Это всегда может привести к петле. Что-то вроде:
public function loop(){
for($x = 1; $x <= 5; $x++){
echo "** {$x} **\n";
$a = 0;
do{
$a++;
echo "$a \n";
sleep(1);
echo date('h:i:s') . "\n";
}while($a < 5);
}
}
Во всяком случае, если у вас есть своя собственная причина. Вперед.