Преобразование кода PHP в С++
Я ищу способ преобразования PHP-кода в С++. Есть несколько причин, по которым я хочу сделать это:
Основная причина: есть множество отличных инструментов/программного обеспечения PHP, которые я бы хотел использовать и включить в приложения С++ GUI или не GUI
- Чтобы повысить производительность
- Чтобы избежать зависимости от библиотек PHP
- Чтобы избежать раскрытия исходного кода в средах с общим хостингом
- Для расширения возможностей языка С++ и использования таких фреймворков, как Qt С++ и Poco
До сих пор я нашел:
http://sourceforge.net/projects/binaryphp
http://www.mibsoftware.com/php2cpp/
Поделитесь своими идеями и инструментами, которые вы знаете. Заранее благодарю вас!
EDIT:
Мне также нужна кросс-платформенная работоспособность и хорошее соответствие для $$, синтаксических функций сахара и интерфейса.
EDIT:
Обратите внимание, что в двух вышеупомянутых инструментах используются два разных подхода. У первого есть встроенные библиотеки для преобразования процедурного кода PHP и его запуска. Последнее переводит (слово за словом) с PHP на С++.
Ответы
Ответ 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). Думаю, на данный момент этого должно быть достаточно.
Некоторые дополнительные ссылки:
Спасибо всем за участие в обсуждении!
Ответ 4
Facebook hiphop открыт некоторое время:
https://github.com/facebook/hiphop-php/
Ответ 5
1-3 может выполняться компилятором Zend
http://www.zend.com/en/
4 немного странно, потому что не является ли Qt С++ оболочкой рабочего стола?