2009-07-07 19 views
36

Sto cercando un modo per convertire il codice PHP in C++. Ci sono alcuni motivi che voglio farlo:Conversione da PHP a codice C++

Motivo principale: ci sono sacco di grandi strumenti di PHP/software che mi piacerebbe usare e incorporare in C++ GUI o non-GUI applicazioni

  1. per migliorare le prestazioni
  2. per evitare dipendenze dalle librerie PHP
  3. ad evitare la divulgazione del codice sorgente in ambienti di hosting condiviso
  4. per essere incaricata dalla funzionalità del linguaggio C++ e fare uso di framework come Qt e C++ Poco

Finora ho trovato:

http://sourceforge.net/projects/binaryphp

http://www.mibsoftware.com/php2cpp/

Si prega di condividere le vostre idee e strumenti che conoscete. Grazie in anticipo!

EDIT: Ho anche bisogno di cross-platform operabilità e buona partita per $$, le funzioni di zucchero sintattico e interfaccia.

MODIFICA: Si prega di notare che 2 strumenti di cui sopra utilizzano 2 approcci diversi. Il primo ha librerie incorporate per convertire il codice procedurale di PHP e farlo funzionare. Quest'ultimo si traduce (parola per parola) da PHP a C++.

+6

Sembra che tu risposto alla tua domanda. –

+0

Ho bisogno di extra :) Quelli non sono ancora sufficienti. Come gestire casi come $$ o Interfaccia? Sto cercando di evitare di scrivere il mio codice. Mirando anche all'interoperabilità multipiattaforma. – Viet

+2

PHP è già interoperabile tra piattaforme diverse. Se stai cercando di evitare di scrivere il tuo codice, perché stai provando a convertirlo in C++? –

risposta

37

Forse non sono completamente contento del contesto del motivo per cui pensi di doverlo fare, ma non penso che le ragioni che hai postato siano particolarmente convincenti.

  1. Non molte app Web sono collegate alla CPU, quindi non credo che rimarrai colpito dall'aumento delle prestazioni. La compilazione del codice nativo non renderà il tuo I/O o DB in attesa più corto. Esistono modi migliori per ridimensionare un'app Web rispetto al passaggio a C++ e la maggior parte di essi comporta la riduzione del tempo in cui lo script è in attesa di dati dal DB o dal disco (come ad esempio il DB o lo spostamento di dati in una cache RAM).

  2. Le dipendenze della libreria sono davvero un problema? Molte delle librerie più popolari sono ora fornite in bundle con il core PHP, più tutte quelle aggiuntive sono generalmente un gioco da ragazzi da installare. Una volta che li hai, non li tocchi, quindi non sono sicuro del motivo per cui questo è un motivo particolarmente convincente per passare al C++.

  3. Questo è in realtà un motivo molto CATTIVO per passare a C++. La maggior parte degli ambienti di hosting condiviso ti consente di eseguire script in un ambiente PHP, ma molto pochi a nessuno (a meno che tu non stia guardando un VPS) ti consentirà di eseguire un binario arbitrario come faresti con un'applicazione C++. Esistono modi migliori per controllare la leggibilità della fonte in ambienti condivisi, come l'utilizzo corretto dei permessi dei file. Se sei preoccupato per i clienti che rubano il tuo codice PHP, beh, troppo male. Puoi provare a offuscare tutto ciò che desideri, ma in genere è inutile alla fine della giornata.

  4. Quali caratteristiche specifiche di C++ avete così disperatamente bisogno che PHP non offra? Ad essere onesti, l'idea del tuo codificatore PHP medio che si morde con i puntatori e l'allocazione della memoria mi spaventa.Ci sono ottime strutture disponibili per PHP, e ti suggerisco di esaurire completamente tutte queste opzioni prima di passare a cambiare la lingua dell'intero codice base solo per alcune funzionalità che ti piacciono in particolare.

  5. Hai menzionato la compatibilità multipiattaforma nel tuo commento ... PHP lo rende davvero più facile di C++. L'implementazione di PHP è relativamente standardizzata su tutte le piattaforme (eccetto per alcune funzioni di livello inferiore) mentre probabilmente userete un compilatore e chiamate di sistema differenti in C++.

+2

Con la versione 5.3.0 rilasciate molte delle funzioni di livello inferiore di cui penso si stia parlando con Windows, nelle build compilate VC9 più recenti, in cui vengono rimossi il livello di traduzione da UNIX a Windows e chiamate direttamente le interfacce Windows. –

+0

Grazie Bob. Hai dato ottimi argomenti. Ho le mie ragioni per perseguire questo prima di prendere questa decisione. Sulla compatibilità multipiattaforma, Qt C++ e Poco C++ fanno un ottimo lavoro e li adoro. – Viet

+0

Grazie Nick per la nota. – Viet

3

1-3 può essere realizzato dalla Zend compilatore

http://www.zend.com/en/

4 è un po 'strano, perché non è il Qt C++ un quadro del desktop UI?

+0

Grazie Nick :) Ho bisogno del codice C++ per lavorare e migliorare, quindi continuerò a cercare. – Viet

+0

Qt C++ può essere usato anche per scrivere applicazioni di console e demoni :) Ho anche provato a scrivere applicazioni CGI usando Qt per godermi la sua ampiezza e profondità di librerie (networking, elaborazione stringhe, I/O ...) – Viet

8

Dopo molte ricerche, ho trovato http://www.phpcompiler.org/doc/maketea.pdf e http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf. Poiché il codice sorgente di PHP può essere analizzato e quindi tradotto in XML, convertirlo in C++ è solo una questione di XSLT. Inoltre, PHPCompiler supporta anche plugin e varie trasformazioni del codice sorgente (basate su trasformazioni AST). Penso che dovrebbe essere sufficiente per ora.

Alcuni riferimenti aggiuntivi:

  1. http://www.phpcompiler.org
  2. http://www.phpcompiler.org/doc/latest/devintro.html
  3. http://rosecompiler.org
  4. http://rosecompiler.org/ROSE_UserManual/ROSE-UserManual.pdf

Grazie a tutti per partecipare alla discussione!