Ist es möglich einen Browser in PHP zu programmieren?

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Möglich ist es definitiv.

Du kannst in PHP auch Funktionen aus nativen Bibliotheken verwenden (siehe dazu auch: https://readthedocs.org/projects/php-native-interface/), damit wären z.B. auch sämtliche Funktionen von GTK, QT, usw... verwendbar.

Zur Frage, ob es nicht naheliegend wäre: Nein, das wäre es nicht. Es wäre mit PHP um einiges aufwändiger und ineffizienter. Das steht dagegen, nicht etwa wie es hier von einigen Leuten behauptet wurde, dass es nicht möglich wäre...

auf der CLI wäre einen ziemlich eingeschränkter Textbrowser möglich... das war es dann aber schon

rstrNet 
Fragesteller
 15.09.2020, 20:10

Die Idee mit CLI ist nicht schlecht, aber ich denke da geht noch mehr. Danke für den Tip.

0
geheim007b  15.09.2020, 21:07
@rstrNet

alles grafische kannst du vergessen, du hast keine Möglichkeit auf der CLI Grafiken auszugeben. Dafür ist PHP nicht gemacht, PHP liefert bestenfalls die Grunddaten (aufbereitete Grafiken) an etwas anderes aus, die Anzeigeroutinen müssen auf einer anderen Sprache laufen. PHP könnte auf der CLI als eine art Proxy dienen der Daten für ein Javaprogramm abruft und abändert. Das ist das höchste der Gefühle :)

0
rstrNet 
Fragesteller
 16.09.2020, 12:59
@geheim007b

Also die Programmierer von Content Management Systemen setzen durchweg auf PHP. Und grafische Oberflächen sind bei CMS ein Muss! Ich glaube nicht, dass man dies vergessen kann.

0
geheim007b  16.09.2020, 16:11
@rstrNet

die grafische oberfläche wird aber im Browser gebildet... php liefert nur rohdaten aus, stellt sie aber nicht selbst da. Der Browser ist nicht in PHP programmiert

0
Isendrak  15.09.2020, 20:21

Wenn man sich unbedingt auf CLI beschränken will, dann kommt das hin.

Aber warum sollte man das tun (mal abgesehen davon, dass es aus anderen Gründen unsinnig wäre)?

1

Möglich mit absurden Verrenkungen und einer unfassbaren Menge Zeit. Wahrscheinlicher ist aber, dass du in der selben Zeit ein Mittel gegen Krebs findest.

PHP wird auf Servern ausgeführt und dient der Dynamisierung von Webseiten. Du könntest jetzt auch schlussfolgern, dass es ja nur Sinn machen würde den Nagel mit einem anderen Nagel in die Wand zu hauen. Der Schluss ist aber falsch, man nimmt für jede Aufgabe das richtige Werkzeug.

Und Browser-Engines sind nun wirklich monströse Software-Projekte. Niemand hat Bock darauf mit so einer Guffelsprache etwas derart komplexes umzusetzen.

rstrNet 
Fragesteller
 16.09.2020, 13:21

Die Kleinen werden häufig unterschätzt!

0

Also so abwegig ist das nicht. Und gab einige sehr interessante Projekte, PHP als Programmiersprache für Desktop anwendungen zu verwenden.

Projekte findest du hier. Weitere am Schluss der Seite.

https://en.wikipedia.org/wiki/PHP-GTK?wprov=sfla1

Leider nur Englisch.

Diese haben aber in die PHP Community oder bei Zend nie Eingang in den Sprachkern gefunden.

Woher ich das weiß:Berufserfahrung – Web Developer bei einem mittelständischen Portalbetreiber

PHP fehlt eine ganze Reihe von Fähigkeiten, die absolut notwendig sind, um einen Browser in halbwegs performant hinzubekommen: Zeiger, IPC, echte Arrays, und sehr sehr viel mehr.

Woher ich das weiß:Berufserfahrung
rstrNet 
Fragesteller
 16.09.2020, 12:50

Kurze Frage: In PHP gibt es einfache (indizierte) Arrays, assoziative Arrays und multidimensionale Arrays. Was sind 'unechte Arrays'? Hängt die Anmerkung mit dem Umstand zusammen, dass Arrays in PHP unterschiedliche Datentypen enthalten können?

0
TinaAusWien  16.09.2020, 13:36
@rstrNet

PHP kennt gar keine richtigen Arrays, sondern nur einen Container, der intern eine ganze Müllhalde an Datenstrukturen beherbergt.

Da sind Bäume, Listen, Maps, Sets uvm. enthalten.

In PHP heißen diese Dinger zwar "Array", sind in Wirklichkeit aber mehr so etwas wie optional assoziative Deques.

Warum PHP hier nicht ordentlich getrennte Container mit nur einem Bruchteil des Speicherfußabdrucks anbietet, erschließt sich mir nicht.

PHPs angebliche Arrays sind das beste Beispiel für das Antipattern einer Gott-Klasse.

Python kennt zwar ebenfalls keine Arrays, aber das schmerzt kaum, da es eine Vielzahl von sauber getrennten leichgewichtigen aber dennoch mächtigen Containern bzw. Collections gibt.

1
KarlRanseierIII  16.09.2020, 20:05
@TinaAusWien
>>> import array
>>> array.__doc__
'This module defines an object type which can efficiently represent\nan array of basic values: characters, integers, floating point\nnumbers.  Arrays are sequence types and behave very much like lists,\nexcept that the type of objects stored in them is constrained.\n'

Zumindest als Modul in der Stdlib gibt es typisierte Arrays, nichts anderes als C Arrays mit etwas Wrappingmagie ;-).

1
TinaAusWien  17.09.2020, 00:00
@KarlRanseierIII

Njajaja, also unter Array verstehe ich schon etwas anderes.

Diese Pythonarrays würde ich eher mit std::vector von C++ vergleichen, und dann auch nur für primitiv Typen und nich mal PODs.

Außerdem liegen die immer auf dem Heap und die Initialisierung ist nich wirklich effizient, was aber sowieso keine Rolle spielt, da Python.

An sich heißt das zwar Array, ist aber keins. Einen Arraywrapper, der diesen Namen auch verdient, findest du ebenfalls bei C++ als std::array.

Ist aber auch egal, da man bei Skriptsprachen ja sowieso eher selten in die Verlegenheit kommt, so etwas zu benötigen. Es sei denn, mann will einen Webbrowser schreiben. :)

1
KarlRanseierIII  17.09.2020, 00:07
@TinaAusWien

Ja, es kommt eher dem std::vector gleich, wobei es unterm Strich wirklich C-Arrays sind und direkt dessen Typen nutzt. Entsprechend ist der 'Type Qualifier' auch abhängig von der C-Implementierung.

Sie sind aber für indizierten Zugriff by numerischen Typen (z.B. Char arrays als Buffer) schon deutlich performanter als die List - der Preis ist der Verlust verschiedene Typen mischen zu können.

Ein Array auf dem Stack (Damit meine ich nicht dem Python Stack) sind ohnehin illusorisch, das stimmt schon.

1