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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

  • Allegro CL
  • С#
  • CFFI
  • CLISP
  • Цыпленок
  • Коварство
  • Java
  • Lua
  • Модуле-3
  • Mzscheme
  • OCAML
  • Октава
  • Perl
  • PHP
  • Python
  • R
  • рубин
  • Tcl
  • UFFI

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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