hmm no, non è proprio esatto
quando calcoli un or, se una delle espressioni è vera, l'or restituisce sempre true. Quindi, è inutile andare a calcolare N espressioni in or quando la prima è vera...
quindi, se chiedi a php di calcolarti $a || $b, se $a è vera non andrà mai a calcolarti $b, perchè sarebbe uno spreco di tempo e risorse. Infatti, come hai detto giustamente te, nell'esempio c'è isBuggyIe() || ob_start(..), e tu hai detto "se isBuggyIe è vera allora ob_start parte"... se non fosse come dico io, l'affermazione tua sarebbe errata perchè cmq php andrebbe a testare il valore di ob_start
con && non succede perchè bisogna sempre testare i valori di almeno le prime tre espressioni della condizione per sapere se è true o false ( vero && falso = falso, ma vero && vero e falso && falso = vero)
per farti un esempio, esegui
e vedi un pò che output ti tornaCodice PHP:
<?php
function a1(){ echo "a1 executed"; return true; }
function a2(){ echo "a2 executed"; return false; }
if(a1() || a2())
echo "c'è";
else
echo "non c'è";
?>
ps: e chi l'ha mai letto il manuale... o almeno, non per queste cose