Подтвердить что ты не робот

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

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

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

  • Чтобы повысить производительность
  • Чтобы избежать зависимости от библиотек PHP
  • Чтобы избежать раскрытия исходного кода в средах с общим хостингом
  • Для расширения возможностей языка С++ и использования таких фреймворков, как Qt С++ и Poco

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

http://sourceforge.net/projects/binaryphp

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

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

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

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

4b9b3361

Ответ 1

Это может также стать интересным за короткое время:

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

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

Ответ 5

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

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

4 немного странно, потому что не является ли Qt С++ оболочкой рабочего стола?