Christian Seiler: Lesen und Schreiben von Dateien

Beitrag lesen

Hallo,

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

Doch.

Nochmal:

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

Natürlich nicht. Aber wenn Du abfragst, ob if (bla() == 1) ist, dann wird die Funktion bla() aufgerufen und das Ergebnis der Funktion dann mit 1 verglichen. Und in meinem Artikel wird halt das Ergebnis mit false verglichen (das macht das !).

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.

Im Prinzip ist

if (bla () == 1)

eine Kurzschreibweise für:

$resultat = bla ();  
if ($resultat == 1)

PHP ersetzt das automatisch durch das Ergebnis der Funktion bla (). Das ist genauso, wenn Du das Ergebnis einer Funktion als Aufrufparameter einer weiteren Funtkion verwendest vergleiche z.B.

printf ("%s\n", bla ());

mit

$resultat = bla ();  
printf ("%s\n", $resultat);

In beiden Fällen wird die Funktion bla () ausgeführt und das Ergebnis dann als Parameter für die Funktion printf () verwendet. Im zweiten Fall hast Du jedoch eine zusätzliche Variable, die Du im ersten Fall nicht hast (weil PHP das Ergebnis implizit verwendet).

Das ist übrigens nicht nur in PHP der Fall, sondern in so gut wie jeder imperativen Programmiersprache (es gibt Ausnahmen).

In meinem Artikel wird nun die Funktion flock() aufgerufen. Die sperrt die Datei und gibt dann zurück, ob das Sperren erfolgreich durchgeführt werden konnte. D.h. die Tatsache, dass dort flock (...) steht heißt, dass beim Auswerten der Funktion schon gesperrt wird.

Viele Grüße,
Christian