phpbar.de logo

Mailinglisten-Archive

[php] PHP in C++ integrieren

[php] PHP in C++ integrieren

Michael Arndt lodd at dkc-clan.de
Don Dez 8 19:10:05 CET 2005


Also was ich eigentlich vorhabe ist PHP genauso zu benutzen wie zB VBA 
is Office.
Alle Tastendrücke etc. sollen auch über einen PHP Skript getätigt werden 
können.
Zusätzlich will ich aber auch aus dem Programm auf Variablen, die in PHP 
existieren zugreifen.

Was ich mir konkret vorstelle sind eingentlich sehr wenig funktionen, 
die man als API braucht:
eine art init-funktion,
eine funktion, der man einen Skript oder ein String übergeben kann 
(String wäre besser)
    das scheint mit zend_do_include_or_eval in zend_compile.c zu gehen
eine Möglichkeit auf Variablen zuzugreifen (also die in PHP)
und was um das PHP system zu beenden.

Wärend der Laufzeit des Programms soll dann eine Instanz von PHP im 
Hintergrund laufen und wenn die Benutzereingabe
das Wünscht, dann wird ein Skript ausgeführt. Wichtig dabei ist 
allerdings, das die Variablen die in Skript A gesetzt werden
auch in Skript B verfügbar sind.

Falls es noch nicht ganz klar ist hier etwas Besipiel mit Pseudocode:

Programm:
Ein Fenster mit einem Textfeld und 2 Buttons, der eine mit der 
Aufschrift "Ostern", der andere mit "Weihnachten".
Code:
onInit()
{
    php_initializeSubsystem();
}

btnOstern_onClick()
{
    runscript("ostern.php");
}

btnWeihnachten_onClick()
{
    runscript("weihnachten.php");
}

onClose()
{
    php_freeSubsystem();
}

PHP:
weihnachten.php:
$btnWeihnachten->text = 'Frohe Weihnachten';

ostern.php:
$btnOstern->text = 'Frohe Ostern';
    /*
    Hier wäre auch OK:
    runscript("btnOstrern_setText('Frohe Ostern')");
    wobei btnOstern_setText() in C++ definiert wäre.
    */

Der Benutzer könnte jetzt weihnachten.php seiner Religion gemäß umschreiben:
$btnWeihnachten->text = 'Frohes Hanuka';

Verzeiht mir bitte dieses dumme Besipiel und dass ich nicht weiß wie man 
Hanuka schreibt und auch gerade zu faul zum nachgucken bin ;)

Mein momentaner Ansatz:
1. PHP kompilieren ohne alle optionalen features (außer bcmath) 
kompilieren. (da hengt es gerade -.-)
2. Mal so durch debuggen...

wenig konkret, ich weiss... aber wenn jemand sowas schonmal gemacht, 
kann er ja tipps dazu beitragen.
Wenns irgendwann mal klappen sollte schreib ich dazu auf jedenfall ein 
Tutorial, weil es
für PHP glaube ich ein ganz neues Anwendungsgebiet wäre.



Johannes Schlueter wrote:

>Hallo Michael,
>
>On Sunday 04 December 2005 21:35, Michael Arndt wrote:
>  
>
>>Ich such seit einigen tagen im Internet nach einer Möglichkeit PHP 5 in
>>C++ zu integrieren.
>>Gibt zwar viele Scriptsprachen wie CSL mit denen das recht einfach geht,
>>aber ich würde PHP bevorzugen, besonders wegen der Objektorientierung.
>>Hab mir auch schon den Quellcode von php angeguckt, aber werd nur
>>begrenzt schlau daraus :-[ .
>>
>>Hoffe das ist nicht die falsche Liste für sowas, vllt. hat ja mal jemand
>>soetwas gemacht.
>>    
>>
>
>Also zunächst wäre zu klären was Du genau willst, willst Du PHP aus einer 
>anderen Applikation heraus ausführen und den Interpreter einbinden oder nur 
>Funktionen anbinden?
>
>Letzteres geht recht einfach, einfach mal nach "extending PHP" suchen, sollte 
>viele Treffer geben, interessanter Anfang dürften Artikel von Sara Golemon 
>auf Zend.com sein. Ersteres ist weniger dokumentiert.
>
>Zum einbinden in andere Applikationen gibt es von PHP die SAPI (= Server 
>Application Programming Interface) Schnittstelle über die die Anbindungen an 
>andere Anwendungen, primär Web-Server, gemacht werden. Beispiele dafür gibt 
>es im php Sourcecode unter php-src/sapi/. Wenn das zu kompliziert ist reicht 
>evtl. auch sapi/embed, das ist ein .so (bzw. .dll) die man bekommt wenn man 
>php mit --with-embed (glaube ich, nicht nachgeschaut) kompiliert. Damit kann 
>man dann recht einfach PHP initialisieren und Code ausführen. Wirklich Wissen 
>zu dem ganzen Zeug gibt es nur in Form von Code ("Use the Code Luke") und als 
>Wissen in Köpfen. Ein Buch, dass das am Rande behandelt ist "Advanced PHP 
>Programming" von George Schlossnagle, Sara Golemon arbeitet an einem Buch 
>über das Thema, dass irgendwann nächstes Jahr erscheinen soll.
>
>Bei allem muss bedacht werden, dass es sich bei PHP um ein bewegliches Ziel 
>handelt wo sich APIs immer mal ändern und die Änderungen nicht groß in 
>Changelogs auftauchen und ob Du embed oder eigenes SAPI willst kann ich so 
>auf Distanz nicht sagen...
>
>johannes
>  
>

php::bar PHP Wiki   -   Listenarchive