dedlfix: (file)handle oder (file)pointer

Beitrag lesen

Hi!

Ich glaube mir fehlt da etwas das abstrakte Denken. Kann ich mir das bildhaft etwa so vorstellen?
Zeiger = Ich zeige auf einen Notizblock.
Will ich nun etwas aus dem Block radieren, reinschreiben oder ähnliches, muss ich diesen schon greifen (Handle).

Naja, nicht ganz. Ein Zeiger im eigentlichen Sinne zeigt nur auf Speicherstellen. Der Notizblock ist aber ein externes Speichermedium. Mit deiner Analogie wäre ein Zeiger ein Verweis innerhalb deines Gehirns. Im Computer zeigt ein Zeiger zum Beispiel auf den Anfang einer Information (vielleicht eine Zeichenkette). Um im Notizblock etwas festzuhalten brauchst du mehr Daten. Wenn du ihn gefunden hast, musst du ihn mit deinen Augen sehen, must ihn mit deinen Händen aufschlagen, musst die Stelle ausfindig machen, wo die nächste Notiz eingetragen werden kann und ihn am Ende wieder zuklappen. Erst dann kannst du das Handle wieder schließen, das für diese Interaktion mit dem Notitzblock notwendig war. Du und dein Gehirn, ihr macht das zwar intuitiv, aber der Rechner braucht für viele Schritte einige Informationen, und die werden intern alle über das Handle verwaltet.

Letzter Verständnisversuch, danach nehme ich Handle als gegeben hin oder schreibe einfach alles in eine Variable $foo oder so. Problem ist nur, dass ich mir das so einfach nicht merken kann, wenn ich es nur auswendig lerne und nicht verstehe.

Für dich als PHP-Programmierer ist es nicht so wichtig, was das Ding konkret ist, jedenfalls nicht für das Veständnis, was du damit anstellen kannst. Du kannst die Variable auch es als Stellvertreter für die Datei ansehen, die du einigen der f...()-Funktionen mitgeben musst, damit sie alle das gleiche Wissen über die Datei und ihren Bearbeitungszustand bekommen.

Möglichst exakte Begriffe zu verwenden, ist für eine effektive und effiziente Kommunikation wichtig. Jedoch wäre auch "Dateivariable" aus PHP-Programmierer-Sicht eine Bezeichnung, die verstanden werden müsste, wenn es um die f...()-Funktionen geht.

Lo!