Zeiger?

mille

Erfahrenes Mitglied
Hey!

Eines Tages hatten wir im Unterricht ein Thema das hiess Zeiger. In Delphi.
Falls jetzt vielleicht keiner mit dem Wort Zeiger/Pointer was anfangen kann eine ganz ganz kurze Klärung:
Zeiger sind Verweise von INformationen/Daten. Dieser Zeiger enthaelt quasi die Adresse, in der der INhalt einer Variable gespeichert ist - Meisst Hexadezimal!

So, das ist ja Kein Problem!
ABer gibt es sowas auch in PHP? Und vorallem wie heisst das? ich hab mich mal umgeschaut aber zu zeiger nicht das gefunden was ich gesucht habe...

Da ich momentan an einem Forum arbeite kam mir die Überlegung garnicht mit Variablen zu arbeiten sondern mit Pointern, damit dürfte es (bei einer eventuellen großen Usermenge/Datenmenge) natürlich erstaunlich stabiler und flüssiger laufen? Aber bevor ich umsteige sollte ich mich mit dem Thema erstma befassen, deshalb die Frage :)

schönen Abend euch noch!
 
Also soweit ich weiss gibt es sowas in PHP nicht.
Aber es wird bestimmt noch jemand erklären warum, wieso, weswegen.
:-)
 
Wenn du ein & vor die Variable stellst müssteste auch in PHP ein Zeiger stellen können.

Bsp.:

PHP:
function foo(&$var1)
{
 $var1 = 123;
}

$test = 345;
echo $test; //Ausgabe 345;
foo($test);
echo $test; //Ausgabe 123;
 
naja ist aber eher eine Referenz und kein Zeiger.
Von daher kannst du es später dennoch variabel ansprechen.

Daher ist es nicht möglich, wie z.B. in C den Zeiger "hochzuzählen" und nicht den Wert selbst (z.b. beim Durchlauf durch ein Char-Array...)

PHP:
$a  = 1;
$ref = &$a;
$ref++; // $a ist jetzt 2 und $ref auch, wenn $ref ein Pointer und keine Referenz wäre müsste aber so der Pointer hochgezählt worden sein...
 
Zuletzt bearbeitet:
Ok ich gebs zu ich hab Mist erzählt. Schau abe auch auf meine Zeit, wo ich das geschrieben habe. ;)

Ich denke mal du kannst keine Zeiger in PHP verwenden, weil du sonst eine Möglichkeit finden könntest den Speicher des Servers zu chrashen. Ist ja mit Zeigern nicht wirklich das Problem ^^
 
Es kommt auch ganz darauf an was du _genau_ unter Zeiger verstehst. Einen klassischen C-Pointer oder z.B. einen Zeiger/Verweis in einem Baum, der objektorientiert ist. Darin hast du auch Zeiger. Und einen Zeiger auf ein anderes Objekt kannst du auch in PHP setzen.
 
Japs, also, es gibt keine direkten Speicher methoden in PHP, daher auch keine Pointer auf den Speicher. Jedoch gibt es sonst auch zeiger, bei Variablen, bei Objekten, bei (vielen) resourcen, bei Datein.
Bei Variablen kannst du diesen jedoch nicht direkt beinflussen, genauso kannst du ihn bei Objekten, nur wenn extra funktionen dafür in das Objekt integriert sind beinflussen. Bei Resourcen kannst du den Zeiger ganz normal wie bei eine x-belibigen Textdatei setzen, dies gild auch für exec's, wobei du hier beachten musst, das die laufzeit von PHP unabhängig ist, es also keinen sinnmachen würde^^, und bei Datein, ist denke ich klar, so wie der Cursor beim Schreiben der Pointer, den du auch beinflussen kannst..
Wenn du uhnbedingt in PHP zeiger benötigen würdest, könntest du dir dafür "fake-alias"-funktionen machen, die mit zb system und debug(unter windows) im speicher arbeiten.. Direkt ist das wie von anderen schon erwähnt nicht möglich, was auch an Sicherheitsgründen liegt, da man verhindern will, das du einfluss auf andere Prozesse/Instanzen die unter umständen nicht dir "gehören" einfluss nehmen kannst. Wie gesagt kannst du dafür aber system(); benutzen, und dann eben ein zusatzprogramm, du wirst allerdings nicht viele Server finden, auf denen System erlaubt ist und du auchnoch direkten zugriff auf entsprechende programme bekommst, in diesem fall währe es warscheinlich sinniger, ein CGI in C/Cpp oder ähnlichem zu erstellen.

Hoffe alle deine fragen ausreichend geklährt zu haben,
 
Zurück