Das macht nicht nur PHP so.
Wenn Du zwei Bedingungen hast, ganz egal ob ODER, AND, XOR oder wie auch immer verknüpft hast, wird immer jede Einzelbedingung für sich ausgewertet.
In dem Beispielfall hast Du halt links die Bedingung
und rechts
$page > $paginationLinks ? 1 : 0
Ob PHP jetzt zunächst die rechte oder die linke Bedingung auswertet, kann ich nicht genau sagen, weil ich das grad nicht getestet habe.
Auf jeden Fall werden die aber einzeln ausgewertet und dann mit dem logischen Operator verknüpft.
Um jetzt klar zu definieren, dass die zweite Bedingung explizit nur
sein soll, gibt man die Klammern an
( $page == 1 || $page > $paginationLinks )
Jetzt weiß der Interpreter, dass er diese beiden Bedingungen für sich und anschließend per ODER auswerten soll.
Ich will jetzt nichts falsches sagen, aber ohne jetzt großartig nachgeschlagen zu haben, glaube ich sogar, dass die Einzelbedingungen von rechts nach links ausgewertet werden. Kann aber andersrum sein.
Jedenfalls "erkennt" der Interpreter den logischen Operator und entscheidet im Einzelfall bereits ohne weitere Einzelbedingungen auswerten zu müssen.
Triviales Beispiel:
if ( true && false ) {
//...
}
Wenn von rechts nach links ausgewertet werden würde, wäre die linke Bedingung irrelevant, weil die rechte bereits false ist.
Und bei && ( AND ) müssen alle Bedingungen true sein, um den Gesamtausdruck true werden zu lassen.
Der Interpreter springt dann schon vorzeitig aus der Gesamtbedingung, weil sie nicht mehr true werden kann.
Ich hoffe, das ist jetzt nicht zu verwirrend geschrieben.