Преобразуйте PHP в [закрытый] код C++

Вы рассмотрели сериализацию к JSON вместо XML?

Json.NET имеет действительно мощный и гибкий сериализатор, который не имеет никаких проблем со словарями Хеш-таблиц / универсальными словарями и не требует никаких конкретных атрибутов. Я знаю, потому что я записал его:)

Это дает Вам "кучу" управления через различные варианты на сериализаторе, и это позволяет Вам переопределять, как тип сериализируется путем создания JsonConverter для него.

, По-моему, JSON более человекочитаем, чем XML и Json.NET дают опцию записать приятно отформатированный JSON.

Наконец проект является открытым исходным кодом, таким образом, можно ступить в код и сделать модификации, если Вы должны.

37
задан JasonMArcher 3 August 2015 в 15:42
поделиться

4 ответа

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

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

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

27
ответ дан 27 November 2019 в 04:27
поделиться

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

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

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

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

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

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

37
ответ дан 27 November 2019 в 04:27
поделиться

После долгих исследований я нашел http://www.phpcompiler.org/doc/maketea.pdf и http://rosecompiler.org /ROSE_Tutorial/ROSE-0.9.4a-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

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

8
ответ дан 27 November 2019 в 04:27
поделиться

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

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

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

3
ответ дан 27 November 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: