SWIG для создания расширений PHP, вы пробовали это? - PullRequest
3 голосов
/ 17 января 2009

У меня есть несколько небольших библиотек и оболочек, написанных на 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 ... если нет, я потрачу время только на создание расширений вручную.

1 Ответ

2 голосов
/ 17 января 2009

Несколько лет назад я участвовал в проекте по созданию прототипа модуля Python на основе C API. Мы решили использовать SWIG, чтобы начать работу, так как никто из участников проекта не знал Python C API. Хотя в принципе идея о том, что некоторые автоматически сгенерированные функции звучат великолепно, в действительности заставляет нас больше работать, поскольку нам нужно было настроить и настроить сгенерированный SWIG-код в соответствии с нашими потребностями.

С точки зрения PHP, я поддерживаю расширение PHP C и не верю, что для вашей "простой" функции C, работающей с SWIG, будет полезно, писать код вручную будет проще. Возможно, вам стоит получить или прочитать Расширение и встраивание PHP от Sara Golemon.

...