dedlfix: Lesen und Schreiben von Dateien

Beitrag lesen

echo $begrüßung;

if (!flock ($fp, LOCK_EX)) {
  die ('Sperren der Datei fehlgeschlagen!');
}
Bei der zweiten if-Abfrage wird gefragt: Wennn die Sperre _nicht_ möglich ist/wenn nicht gesperrt ist, dann...
Aber es gibt keinen _direkten_ Sperrbefehl. Also so in der Art wie flock ($fp, LOCK_EX));

Es ist unerheblich, ob eine Funktion allein stehend oder in einem (komplexen) Ausdruck aufgerufen wird. Aufruf ist Aufruf. Sie arbeitet keineswegs anders, wenn man sie in einem anderen Kontext aufruft.

Wenn ich abfrage, ob $a==1, dann heißt das ja auch nicht automatisch, daß $a=1 gesetzt wird.

Das ist richtig. Es ist jedoch nicht unüblich, eine Zuweisung innerhalb eines Bedingungsausdrucks zu notieren

while ($row = fetch(...))

oder auch

if ($row = fetch(...))

wenn man nur ein Ergebnis erwartet. Bei beiden Beispiele sei anzunehmen, dass fetch() im Erfolgsfall ein von false unterschiedliches Ergebnis liefert, ansonsten ein false. Die Zuweisung ergibt also ein false oder was anderes. Das Ergebnis einer Zuweisung ist immer der Wert ihrer Zuweisung, hier also false oder das andere, nicht jedoch ob die Zuweisung erfolgreich war.

Frage: Wieso gibt es in all dem Beispielen des verlinkten Artikels immer nur  if-Abfragen mit !flock und nirgends eine direkte flock-Anweisung?

Es ist überfüssig umständlich, zuerst das Funktionsergebnis einer Variablen zuzuweisen und selbige anschließend nur ein einziges Mal auszuwerten. Da kann man auch gleich das Funktionsergebnis direkt auswerten.

echo "$verabschiedung $name";