2009-07-07 114 views
36

Estoy buscando una forma de convertir el código PHP a C++. Hay algunas razones por las que quieren hacerlo:Convertir código PHP a C++

La razón principal: Hay montón de grandes herramientas PHP/software que me gustaría utilizar e incorporar en C++ aplicaciones GUI o no gráficos

  1. para aumentar el rendimiento
  2. Para evitar la dependencia de las bibliotecas de PHP
  3. Para evitar la divulgación de código fuente en entornos de alojamiento compartido
  4. estén facultadas por C++ las características del lenguaje y hacer uso de marcos como Qt C++ y de Poco

Hasta ahora he encontrado:

http://sourceforge.net/projects/binaryphp

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

Por favor comparta sus ideas y herramientas que conoce. ¡Gracias de antemano!

EDIT: También necesito operabilidad multiplataforma y buena coincidencia para $$, funciones sintácticas de azúcar e interfaz.

EDIT: Tenga en cuenta que 2 herramientas mencionadas utilizan 2 enfoques diferentes. El primero tiene bibliotecas incorporadas para convertir el código de procedimiento de PHP y hacerlo funcionar. Este último traduce (palabra por palabra) de PHP a C++.

+6

parece que responde a su propia pregunta. –

+0

Necesito extra :) Aún no son suficientes. ¿Cómo lidiar con casos como $$ o Interface? Estoy tratando de evitar escribir mi propio código. También aspiro a la interoperabilidad multiplataforma. – Viet

+2

PHP ya es interoperable multiplataforma. Si intenta evitar escribir su propio código, ¿por qué está tratando de convertirlo a C++? –

Respuesta

37

Tal vez no entiendo completamente el contexto de por qué cree que necesita hacer esto, pero no creo que los motivos que publicó sean particularmente convincentes.

  1. No hay muchas aplicaciones web conectadas a la CPU, así que no creo que te sorprenda el aumento en el rendimiento. Compilarlo en código nativo no hará que su E/S o DB esperen más. Hay mejores formas de escalar una aplicación web que moverse a C++, y la mayoría de ellas implican reducir el tiempo que su script está esperando datos de la base de datos o del disco (como fragmentar su base de datos o mover datos a una caché de RAM).

  2. ¿Son las dependencias de la biblioteca realmente un gran problema? Muchas de las bibliotecas más populares se incluyen con el núcleo de PHP ahora, además de las adicionales que son generalmente fáciles de instalar. Una vez que los tienes, no los tocas, así que no estoy seguro de por qué esta es una razón particularmente convincente para pasar a C++.

  3. Esto es realmente una MALA razón para pasar a C++. La mayoría de los entornos de alojamiento compartido le permitirán ejecutar scripts en un entorno PHP, pero muy pocos o ninguno (a menos que esté viendo un VPS) le permitirán ejecutar un binario arbitrario como el que tendrá con una aplicación C++. Hay mejores formas de controlar la legibilidad de la fuente en entornos compartidos, como usar correctamente los permisos de archivos. Si te preocupa que los clientes roben tu código PHP, bueno, lástima. Puedes intentar ofuscarlo todo lo que quieras, pero generalmente no tiene sentido al final del día.

  4. ¿Qué características específicas de C++ necesitas tan desesperadamente que PHP no ofrezca? Para ser sincero, la idea de que tu codificador PHP promedio se estropee con punteros y asignación de memoria me asusta.Hay muy buenos marcos disponibles para PHP, y le sugiero que agote completamente todas esas opciones antes de cambiar el idioma de toda la base de códigos solo por algunas características que le gustan en un marco particular.

  5. Ha mencionado la compatibilidad multiplataforma en su comentario ... PHP honestamente va a hacer esto más fácil que C++. La implementación de PHP está relativamente estandarizada en todas las plataformas (a excepción de unas pocas funciones de nivel inferior), mientras que es probable que utilice un compilador diferente y llamadas al sistema en C++.

+2

Con 5.3.0 lanzado, muchas de las funciones de nivel inferior de las que creo que está hablando se han conectado con Windows, en las versiones compiladas de VC9 más recientes, donde eliminan la capa de traducción de UNIX a Windows y llaman directamente a las interfaces de Windows. –

+0

Gracias Bob. Dijiste muy buenos argumentos. Tengo mis propios motivos para seguir esto antes de tomar esta decisión. En compatibilidad multiplataforma, Qt C++ y Poco C++ hacen un gran trabajo y los amo. – Viet

+0

Gracias Nick por la nota. – Viet

3

1-3 se puede lograr por el Zend Compiler

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

4 es un poco raro, porque no es el Qt C++ un marco de interfaz de usuario de escritorio?

+0

Gracias Nick :) Necesito el código C++ para trabajar y mejorar, así que seguiré buscando. – Viet

+0

Qt C++ también se puede usar para escribir aplicaciones de consola y daemons :) También intenté escribir aplicaciones CGI utilizando Qt para disfrutar de la amplitud y profundidad de las bibliotecas (redes, procesamiento de cadenas, E/S ...) – Viet

8

Después de mucha investigación, he encontrado http://www.phpcompiler.org/doc/maketea.pdf y http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf. Como el código fuente de PHP se puede analizar y luego traducir a XML, convertirlo a C++ es solo cuestión de XSLT. Además, PHPCompiler también admite complementos y varias transformaciones del código fuente (basado en transformaciones AST). Creo que debería ser suficiente por ahora.

Algunas referencias adicionales:

  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

, gracias a todos por participar en la discusión!