Gustav Gans: Lesen und Schreiben von Dateien

Beitrag lesen

Hi dedlfix,

sorry, ich verstehe es einfach nicht. :-(

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.

Hier wird gefragt, ob gesperrt ist oder nicht. Unabhängig vom Ergebnis wird nicht explizit angeordnet, zu sperren. Nochmal:

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

Ich verstehe einfach nicht, wieso hier etwas gemacht wird, wenn es nicht per Befehl im Code steht. Und das tut es doch eindeutig nicht, es wird einfach nur nachgefragt.

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.

Ich hab Deine Erklärung jetzt mehrmals gelesen, ich verstehe es noch immer nicht. :-(

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.

Nochmal, wo wird da was zugewiesen? Es wird doch nur was gefragt? (Was mich wieder zu meinem $a==1-Beispiel bringt.)

*seufz*

Gustav Gans