Когда вы загружаете источник PHP, вы понимаете, что все лакомства находятся в каталоге ext/
в соответствующих array.c
, string.c
и т. Д.
Теперь, мне было интересно, можно ли вызывать эти функции из программы C, имеющей эти файлы PHP C?
Вы можете это сделать, но это не значит, что это хорошая идея. Функции библиотеки PHP относятся к внутренним типам данных, схемам распределения и управления памятью и т. Д. Вероятнее всего, вы потратите много времени и усилий на сбор данных между PHP и C.
Большая часть функциональности, вероятно, доступна в библиотеках C или легко реализована на C (с интерфейсами стиля C) в любом случае. Кроме того, я подозреваю, что вы в конечном итоге свяжете всю PHP с вашей программой, просто обратившись к нескольким функциям PHP.
Конечно, возможно, но, вероятно, больше проблем, чем того стоит. Если вы пишете на C, то пишите на C, некоторые неестественные смехотворные сочетания C и PHP просто принесут вам массу смешных взглядов.
Теоретически возможно, почему вы хотите это сделать. Обратите внимание, что функции PHP обрабатывают данные, хранящиеся в структурах данных PHP, и часто требуют, чтобы различные структуры и настройки PHP были инициализированы для работы.
Итак, если вы хотите добавить свой C-код в PHP, посмотрите на написание PHP-расширений .
Если вы хотите иметь PHP-движок внутри вашей C-программы, это возможно при встраивании , но это очень редко делается, так как для большинства задач это перебор.
Если вы просто хотите повторно использовать некоторый код, PHP-лицензия похожа на BSD, поэтому вы можете просто взять код в большинстве случаев, если будете следовать лицензии, но будьте осторожны с этими внешними зависимостями, о которых я говорил выше.
А почему бы не? Просто разрешите любые зависимости и от вас …
Конечно, есть лицензия, которую стоит проверить. Но код мудрый, он должен работать.