Hello,
Interessante Erklärungen 😉
Um nochmal auf mein Beispiel zurückzukommen:
$num = 1; $num++; cnt(); echo $num; # 3 function cnt(){ global $num; $num++; }
Man kann auch static davor schreiben:
static $num = 1; $num++; cnt(); echo $num; # 3 function cnt(){ global $num; $num++; }
Es ändert nichts am Ergebnis. $num verhält sich statisch, so oder so.
Es ändert sich nur die Sichtbarkeit der Variable für andere Funktionen oder Programmteile. Bei GLOBAL dürfen alle mal, bei STATIC bleiben die Variablen ihrer Funktion vorbehalten.
Wie genau und sicher das nun vom jeweiligen Compiler vorbereitet wird, damit der Executor des OS das dann auch beachten muss, wird unterschiedlich gehandhabt.
Wenn man es richtig™ machen will, muss für static variables ein eigener Descriptor in der local descritor table angelegt werden mit dem passenden Attribut, wer ihn benutzen darf.
Das macht aber der Compiler für dich. Du kannst das nur beeinflussen, wenn Du Low-Level-Assembler programmierst.
Glück Auf
Tom vom Berg
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.