2009-01-17 5 views
3

J'ai quelques petites bibliothèques et wrappers écrits en C (pas en C++) que je voudrais mettre à la disposition de PHP via des extensions. J'ai lu plusieurs tutoriels sur writing proper PHP extensions et cela ne semble pas difficile, mais je ne veux pas les tracas de maintenir les extensions en plus des bibliothèques.SWIG pour faire des extensions PHP, avez-vous essayé?

J'ai lu que SWIG supporte les extensions de construction compatibles avec Zend PHP 5, ce qui est parfait pour moi. Cependant, le support semble être bêta selon la documentation SWIG.

Mes bibliothèques sont assez communs, comme par exemple méta d'utilisation dans 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); 
} 

Quelqu'un at-il des expériences à partager avec l'aide SWIG pour faire des extensions pour les bibliothèques aussi simple que cela? Quelqu'un connaît-il des projets libres/open source écrits en C qui utilisent SWIG pour faire des extensions php comme une partie optionnelle de la construction?

Merci d'avance, j'espère avoir un retour. Si c'est positif, je vais juste consacrer un peu de temps à vraiment connaître SWIG .. sinon, je passerai le temps à faire les extensions à la main.

+0

Je pense que je vais essayer d'essayer SWIG plus tard sur des choses plus simples. Pour l'instant, je vais juste étudier les implémentations curl et mysql existantes, qui correspondent à mes plus petites bibliothèques en complexité (en ce qui concerne PHP). –

Répondre

2

Il y a quelques années, j'ai participé à un projet de production d'un prototype de module Python basé sur une API C. Nous avons décidé d'utiliser SWIG pour nous aider à démarrer car aucune des personnes du projet ne connaissait l'API C de Python. Alors qu'en principe l'idée d'avoir des fonctions générées automatiquement paraissait géniale en réalité, cela nous a causé plus de travail car nous avions besoin de modifier et de personnaliser le code généré par SWIG pour répondre à nos besoins. Du point de vue de PHP, je maintiens une extension PHP C et je ne crois pas que pour votre "C" simple fonction (s) aller avec SWIG sera utile, l'écriture du code à la main sera plus facile. Cela peut valoir la peine d'obtenir ou de lire Extending and Embedding PHP par Sara Golemon.

+0

Merci, je considérais seulement SWIG comme un effort pour gagner du temps lors de la mise à jour des extensions que chaque bibliothèque mise à jour. Je serai également sûr de vérifier ce livre, ses exemples sur le site PHP dev sont extrêmement bien écrits, un livre entier d'entre eux serait très pratique :) Merci pour vos idées! –

Questions connexes