Преобразование кода PHP в C ++

Я ищу способ преобразования PHP-кода в C ++. Есть несколько причин, по которым я хочу это сделать:

Основная причина: Есть множество отличных инструментов / программного обеспечения PHP, которые я бы хотел использовать и включить в приложения C ++ GUI или без GUI

  1. Повысить производительность
  2. Чтобы избежать зависимости от библиотек PHP
  3. Чтобы избежать раскрытия исходного кода в средах с общим хостингом
  4. Для расширения возможностей языка C ++ и использования таких фреймворков, как Qt C ++ и Poco

До сих пор я нашел:

http://sourceforge.net/projects/binaryphp

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

Поделитесь своими идеями и инструментами, которые вы знаете. Заранее спасибо!

EDIT: Мне также нужна кросс-платформенная работоспособность и хорошее соответствие для $$, синтаксических функций сахара и интерфейса.

EDIT: Обратите внимание, что два вышеупомянутых инструмента используют два разных подхода. У первого есть встроенные библиотеки для преобразования процедурного кода PHP и его запуска. Последний переводит (слово за словом) с PHP на C ++.

Это может также стать интересным в ближайшее время:

https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php–move-fast/

Это то, что держит facebook в живых;) Технология, которая переводит и компилирует php на C ++ и собирается работать с открытым исходным кодом. Я ожидаю, что это будет действительно хорошо проверено.

Возможно, я не полностью понимаю, почему вы считаете, что вам нужно это делать, но я не думаю, что причины, которые вы опубликовали, особенно убедительны.

  1. Не очень много веб-приложений связаны с CPU, поэтому я не думаю, что вы будете впечатлены повышением производительности. Компиляция его на собственный код не заставит ваш I / O или БД ждать короче. Есть более эффективные способы масштабирования веб-приложения, чем переход на C ++, и большинство из них связаны с сокращением времени ожидания вашего сценария данными из базы данных или диска (например, сложения вашей базы данных или перемещения данных в кеш RAM).

  2. Являются ли зависимости от библиотеки большей частью проблемы? Многие из самых популярных библиотек в настоящее время связаны с ядром PHP, а также любые дополнительные, как правило, cinch для установки. Как только вы их получите, вы не трогаете их, поэтому я не уверен, почему это особенно убедительная причина для перехода на C ++.

  3. Это на самом деле очень БЕСПЛАТНАЯ причина перехода на C ++. Большинство общедоступных хостинговых сред позволят вам запускать скрипты в среде PHP, но очень немногие (если вы не смотрите на VPS) позволят вам запускать произвольный двоичный файл, как у вас будет с C ++-приложением. Есть более эффективные способы контроля читаемости исходного кода в общих средах, например, с использованием прав доступа к файлам. Если вы беспокоитесь о том, что клиенты крадут ваш PHP-код, ну, слишком плохо. Вы можете попытаться запутать все, что захотите, но, как правило, это бессмысленно в конце дня.

  4. Какие конкретные возможности C ++ вам так отчаянно нужны, что PHP не предлагает? Честно говоря, идея вашего среднего PHP-кодера, уклоняющегося от указателей и распределения памяти, пугает меня. Для PHP есть очень хорошие рамки, и я предлагаю вам полностью исчерпать все эти параметры, прежде чем переходить на изменение языка всей вашей кодовой базы только для некоторых функций, которые вам нравятся в частности.

  5. Вы упомянули кросс-платформенную совместимость в своем комментарии … PHP честно собирается сделать это проще, чем C ++. Реализация PHP относительно стандартизирована на разных платформах (за исключением нескольких функций нижнего уровня), тогда как вы, вероятно, будете использовать разные компиляторы и системные вызовы на C ++.

После долгих исследований я нашел http://www.phpcompiler.org/doc/maketea.pdf и http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4-Tutorial.pdf . Поскольку исходный код PHP можно разобрать, а затем преобразовать в XML, преобразование его в C ++ – это всего лишь вопрос XSLT. Кроме того, PHPCompiler также поддерживает плагины и различные преобразования исходного кода (на основе преобразований AST). Думаю, этого пока достаточно.

Некоторые дополнительные ссылки:

  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

Спасибо всем за участие в обсуждении!

Facebook hiphop работает некоторое время: https://github.com/facebook/hiphop-php/

1-3 может выполняться компилятором Zend

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

4 немного странно, потому что это не Qt C ++ для рабочего интерфейса пользовательского интерфейса?