Можно ли использовать C ++-файлы из php

Возможно ли написать некоторый код на C или C ++ и скомпилировать их в двоичные файлы, а затем использовать эти двоичные файлы с php? Можно ли также написать библиотеку php с помощью C и C ++?

Если да, расскажите, как я могу это сделать?

Related of "Можно ли использовать C ++-файлы из php"

PHP является модульным в дизайне – он состоит из «движка» и многих расширений, некоторые из которых являются существенными (например, «стандартное» расширение), а некоторые необязательны. Они могут быть скомпилированы или загружены динамически (через настройки php.ini или функцию dl() ).

Вы можете легко написать собственное расширение PHP в C / C ++, если вы хотите изучить API. Начните с документации о том, как «взломать Zend Engine» .

Возможно, вы захотите проверить SWIG , общий инструмент для упаковки библиотек, чтобы их можно было вызывать на разных языках. PHP поддерживается SWIG, как и Perl и Lua (цели, которые я лично использовал). Цитата из списка функций на веб-сайте SWIG :

В настоящее время SWIG генерирует код оболочки для восемнадцати различных языков-мишеней:

  • Allegro CL
  • C #
  • CFFI
  • CLISP
  • Курица
  • коварство
  • Ява
  • Lua
  • Модуле-3
  • Mzscheme
  • OCAML
  • октава
  • Perl
  • PHP
  • питон
  • р
  • Рубин
  • Tcl
  • КФП

В дополнение к этому дерево синтаксического анализа может быть экспортировано как XML и Lisp s-выражения. Экспериментальная работа также доступна для модуля Pike.

Некоторые из его функций зависят от базовой поддержки в генераторах-оболочках на каждом языке, но в целом он предоставляет простые в использовании обертки для передачи всех типов значений равных данных в и из функций. Там, где целевой язык имеет концепцию, он может также отображать объектные модели.

Вы можете использовать скомпилированный код C ++ внутри php, используя функцию system () и вызывая вашу программу через операционную систему (как и в командной строке).

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

EDIT: есть … некоторый базовый учебник по zend. http://devzone.zend.com/node/view/id/1021 , поскольку я изучаю его, возможно, документация изменилась с моего PHP раза 🙂

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

Вы можете создавать расширения общих объектов, которые php может загрузить. На этом коротком учебнике по адресу http://devzone.zend.com/node/view/id/1021

Вы можете написать свой код на C / C ++ и скомпилировать его в EXE. Затем вы можете вызвать exec (); от PHP и выполнить код.

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

Возьмем, например, функцию Mcrypt, это будет просто оболочка PHP в библиотеке libMyCrypt.

Интересно, что вы говорите «потому что это действительно необходимо в корпоративных приложениях». Что отсутствует в текущей библиотеке PHP, которую вам нужно?