SWIG для создания расширений PHP, вы пробовали это?
-
19-08-2019 - |
Вопрос
У меня есть несколько небольших библиотек и оболочек, написанных на C (не на C ++), которые я хотел бы сделать доступными для PHP через расширения. Я прочитал несколько руководств по написанию правильных расширений PHP , и это не кажется трудным Однако я не хочу, чтобы в дополнение к библиотекам поддерживались расширения.
Я прочитал, что SWIG поддерживает создание расширений, совместимых с Zend PHP 5, что идеально подходит для меня , Однако в соответствии с документацией SWIG поддержка кажется бета-версией.
Мои библиотеки довольно распространены, как мета-пример использования в C:
int main(void)
{
struct libfoo *foo;
char **tmp;
foo = foo_init();
if (foo == NULL) {
fprintf(stderr, "Could not allocate foo\n");
return 1;
}
tmp = foo_parse(foo, "/foo/foo.txt");
......
foo_finit(foo);
}
У кого-нибудь есть опыт, которым можно поделиться с помощью SWIG, чтобы сделать расширения для библиотек такими простыми? Кто-нибудь знает о каких-либо проектах с открытым исходным кодом, написанных на C, которые используют SWIG для создания расширений php в качестве необязательной части сборки?
Заранее спасибо, я надеюсь получить отзыв. Если это хорошо, я просто посвящу некоторое время тому, чтобы по-настоящему познакомиться с SWIG ... если нет, я потрачу время только на создание расширений вручную.
Решение
Несколько лет назад я участвовал в проекте по созданию прототипа модуля Python на основе C API. Мы решили использовать SWIG, чтобы начать работу, так как никто из участников проекта не знал Python C API. Несмотря на то, что в принципе идея иметь некоторые автоматически сгенерированные функции звучала великолепно, в действительности это заставило нас больше работать, поскольку нам нужно было настроить и настроить сгенерированный SWIG-код в соответствии с нашими потребностями.
С точки зрения PHP, я поддерживаю расширение PHP C и не верю, что для вашего " simple " С функции (ы), идущие с SWIG, помогут, написание кода будет проще. Возможно, вам стоит получить или прочитать Расширение и встраивание PHP Сара Големон.