Abo
  • Services:
Anzeige
PHP-Code im Browser ausführen
PHP-Code im Browser ausführen (Bild: Niklas von Hertzen)

PHP.js: PHP-Code im Browser ausführen

PHP-Code im Browser ausführen
PHP-Code im Browser ausführen (Bild: Niklas von Hertzen)

Der Webentwickler von Hertzen hat PHP in Javascript nachgebaut, so dass PHP-Code direkt im Browser oder unter Node.js ausgeführt werden kann.

Bei php.js handelt es sich um eine in Javascript implementierte PHP VM. Die Bibliothek liest PHP-Code ein und wandelt ihn in Javascript um, der dann von der zugehörigen PHP VM ausgeführt wird.

Anzeige

Im ersten Schritt wird der PHP-Code in Tokens zerlegt (Tokenizing) und dann im zweiten Schritt in einen Abstrakten Syntaxbaum (AST) verwandelt. Ist die Erzeugung des Syntaxbaums abgeschlossen, wird daraus Javascript-Code erzeugt, der von Niklas von Hertzens PHP VM ausgeführt werden kann. Jeder zusätzliche Code, der innerhalb der VM über eval() oder Lambda-Funktionen ausgeführt wird, durchläuft davor denselben Prozess.

Standardmäßig wird der Code synchron ausgeführt, die Ausgabe ist also sofort lesbar, wenn die Ausführung abgeschlossen ist. Alternativ kann die VM aber auch so eingestellt werden, dass sie in einem Webworker ausgeführt wird, dem dann eine Callbackfunktion übergeben werden muss.

Der auf diesem Weg erzeugte Javascript-Code kann direkt im Browser oder in Node.js ausgeführt werden. Von Hertzen rät aus Sicherheitsgründen aber ausdrücklich davon ab, php.js auf öffentlichen Produktivsystemen einzusetzen. Er sei der erste, so Hertzen, der einräume, dass in php.js noch viele Fehler steckten. Für ihn sei php.js ein spannendes Projekt mit interessanten Herausforderungen. Einen praktischen Nutzen darin sehe er nicht.

Bei der Entwicklung hat von Hertzen einen testgetrieben Ansatz gewählt und sich primär darauf konzentriert, die vom PHP-Team selbst genutzten Unit-Tests einzuhalten. Derzeit besteht php.js 604 von 670 Unit-Tests. Funktionen, für die kein Unit-Test existiert, funktionieren vermutlich nicht, so der Entwickler. Zudem hat er nur einen kleinen Teil der über Module zur Verfügung gestellten Funktionen implementiert.

Php.js ist nicht das erste Projekt, mit dem der Accenture-Mitarbeiter Niklas von Hertzen auf sich aufmerksam macht. Er hat mit html2canvas bereits ein Script geschrieben, mit dem ein Browser Abbilder einer Website erstellen kann und mit WebGL-GTA eine im Browser laufende Version von Grand Theft Auto umgesetzt, die die Dateien des Spiels in ihrem Originalformat per Javascript verarbeitet.


eye home zur Startseite
SSD 29. Jul 2012

süß <= ganz einfach: C#, Java, Scala, C++ (also so ziemlich alles andere) Außerdem ist...

SSD 27. Jul 2012

Doch, wo liegt mein Denkfehler?

xUser2 25. Jul 2012

Und dann in einer JS VM ausführen :D http://bellard.org/jslinux/

pythoneer 25. Jul 2012

Die Unfähigkeit richtig zu testen ist beim PHP Team ja legendär :)



Anzeige

Stellenmarkt
  1. ROHDE & SCHWARZ GmbH & Co. KG, München
  2. Bosch Healthcare Solutions GmbH, Waiblingen
  3. Einhell Germany AG, Landau
  4. über Hanseatisches Personalkontor Hannover, Gallin bei Hamburg


Anzeige
Hardware-Angebote

Folgen Sie uns
       


  1. Flightsim Labs

    Flugsimulator-Addon klaut bei illegalen Kopien Passwörter

  2. Entdeckertour angespielt

    Assassin's Creed Origins und die Spur der Geschichte

  3. Abwehr

    Qualcomm erhöht Gebot für NXP um 5 Milliarden US-Dollar

  4. Rockpro64

    Bastelplatine kommt mit USB-C, PCIe und Sechskernprozessor

  5. Jameda

    Ärztin setzt Löschung aus Bewertungsportal durch

  6. Autonomes Fahren

    Forscher täuschen Straßenschilderkennung mit KFC-Schild

  7. Fernsehstreaming

    Magine TV zeigt RTL-Sender in HD-Auflösung

  8. TV

    SD-Abschaltung bei Satellitenfernsehen steht jetzt fest

  9. PM1643

    Samsung liefert SSD mit 31 TByte aus

  10. Spielebranche

    Innogames wächst weiter stark mit Free-to-Play



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Ryzen 5 2400G und Ryzen 3 2200G im Test: Raven Ridge rockt
Ryzen 5 2400G und Ryzen 3 2200G im Test
Raven Ridge rockt
  1. Raven Ridge AMD verschickt CPUs für UEFI-Update
  2. Krypto-Mining AMDs Threadripper schürft effizient Monero
  3. AMD Zen+ und Zen 2 sind gegen Spectre gehärtet

Razer Kiyo und Seiren X im Test: Nicht professionell, aber schnell im Einsatz
Razer Kiyo und Seiren X im Test
Nicht professionell, aber schnell im Einsatz
  1. Stereolautsprecher Razer Nommo "Sind das Haartrockner?"
  2. Nextbit Cloud-Speicher für Robin-Smartphone wird abgeschaltet
  3. Razer Akku- und kabellose Spielemaus Mamba Hyperflux vorgestellt

Freier Media-Player: VLC 3.0 eint alle Plattformen
Freier Media-Player
VLC 3.0 eint alle Plattformen

  1. Re: Über den Tellerrand?

    hallerstone | 22:49

  2. Re: Bastelplatine?

    Niaxa | 22:46

  3. Re: Alternative zu Straßenschilder

    thorben | 22:46

  4. Re: km/h

    masel99 | 22:33

  5. Illegal

    /mecki78 | 22:28


  1. 17:41

  2. 17:09

  3. 16:32

  4. 15:52

  5. 15:14

  6. 14:13

  7. 13:55

  8. 13:12


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel