Zrozumienie pierwszeństwa operatora w php
W produkcji mam następujący kod, który wydaje się powodować nieskończoną pętlę.
$z=1;
while (!$apns = $this->getApns($streamContext) && $z < 11)
{
myerror_log("unable to conncect to apple. sleep for 2 seconds and try again");
$z++;
sleep(2);
}
W jaki sposób stosowane są reguły pierwszeństwa powodujące to zachowanie?
http://php.net/manual/en/language.operators.precedence.php
Widzę tę notatkę w dokumentach:
Chociaż = ma niższy priorytet niż większość innych operatorów, PHP nadal zezwala na wyrażenia podobne do następujących: if (! $ A = foo ()), w którym to przypadku wartość zwracana przez foo () jest umieszczana w $ a.
Co sprawia, że myślę, że = powinno się najpierw ocenić. a później ! potem &&, co nie spowodowałoby nieskończonej pętli.