PHP-Parser und -Interpreter

thehasso

Erfahrenes Mitglied
Hallo zusammen,



ich halt heute eine präsentation zu php. Dabei hatte ich auch in mein Inhaltsverzeichnis den unterschied zwischen den PHP PARSER und PHP INTERPRETER.


zum PHP PARSER hab ich folgendes gefunden(wenn kein Parser insalliert ist würde man im Webbrowser den PHP CODE lesen können):


Folgende Szenarien sind jedoch denkbar, bei denen der Besucher den PHP-Code trotzdem zu sehen bekommt:

Kein PHP-Parser installiert

PHP-Parser ausgefallen

FTP Zugriff gelangt in Falschen Händen

Ein User verschafft sich Zugriff auf den Webserver mit Telnet oder



und zum PHP INTERPRETER:

PHP ist ein System, das PHP-Code serverseitig verarbeitet. Das bedeutet, dass der Quelltext nicht an den Webbrowser übermittelt wird, sondern an einen Interpreter auf dem Webserver. Erst die Ausgabe des PHP-Interpreters wird an den Browser geschickt. In den meisten Fällen ist das ein HTML-Dokument, wobei es mit PHP aber auch möglich ist, andere Dateitypen, wie Bilder oder PDF-Dateien, zu generieren.


Wass mir unklar ist. der Parser ist ja dafür da das der PHP CODE nicht angezeigt wird. jedoch steht unter php interpreter ebenfalls das dieser den CODE an den Webbrowser übermittelt.


Was macht jetzt also was?


viele grüße
 
PHP Parser und Interpreter ist vom Prinzip her das gleiche.
Klar, wenn man die existierenden Programme analysiert.
Allerdings ist ein Parser nicht zwingend das gleiche wie ein Interpreter.
Genauer gesagt interpretiert der Interpreter das was der Parser geparst hat.
Sprich: Der Parser übersetzt den Quelltext in ein maschinenfreundlicheres Etwas (z.B. einen Syntaxbaum) und der Interpreter arbeitet dieses Etwas ab.
Oder: Der Parser ist meist Bestandteil des Interpreters.

Gruß
Enum
 
Der Parser ist meist Bestandteil des Interpreters.

Genauso war das auch gemeint. Sorry, etwas falsch rüber gekommen. Ein Interpreter macht ohne einen Parser nicht viel Sinn. Anders herum sehr wohl. Ohne den Quellcode angesehen zu haben, aber vermutlich wird bei

Code:
php -l somescript.php

nur der Parser gestartet und die Syntax geprüft. Funktionen werden nicht ausgeführt. Dies würde der Interpreter dann erledigen.

Danke für die Korrektur, @Enumerator.
 
vermutlich wird bei

Code:
php -l somescript.php

nur der Parser gestartet und die Syntax geprüft. Funktionen werden nicht ausgeführt. Dies würde der Interpreter dann erledigen.
Stimmt. Da der Parser per Definition nur den Quellcode für den Interpreter aufbereitet erkennt er z.B. nicht wenn Funktionen aufgerufen werden sollen die gar nicht existieren. Daher würde folgender Code:
PHP:
<?php
eine_funktion_die_es_nicht_gibt();
... aufgerufen mit mit php -l keinen Fehler erzeugen.
 
Zurück