Maison > Article > développement back-end > Explication détaillée de la méthode d'utilisation de la bibliothèque lib basée sur la fonction dans le développement d'extensions PHP
Cet article présente principalement la méthode d'utilisation de la bibliothèque lib basée sur les fonctions de développement d'extensions PHP7. Il analyse l'encapsulation et les compétences opérationnelles liées à l'appel de l'extension de bibliothèque lib en PHP7 sous forme d'exemples. 🎜>
L'exemple de cet article décrit la méthode basée sur les fonctions d'utilisation de la bibliothèque lib dans le développement d'extensions PHP7. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :Avant-propos
Tout d'abord, parlons de ce qu'est une bibliothèque lib est. La bibliothèque lib est un fichier qui fournit des fonctions spécifiques. Il peut être considéré comme un fichier en PHP, qui fournit certaines méthodes fonctionnelles. C'est juste que cette bibliothèque lib est écrite en c ou c++. Scénarios utilisant la bibliothèque lib. Certains logiciels fournissent déjà des bibliothèques lib, nous n'avons donc pas besoin de les implémenter à nouveau. Par exemple, l'extension mysql d'origine est encapsulée à l'aide de la bibliothèque officielle mysql lib. Dans cet article, nous allons construire une bibliothèque lib simple et effectuer des appels encapsulés dans l'extension.Code
Code de base
Cette extension, nous ajouterons . Veuillez lire cet article de blog pour connaître le code lié à l'extension, par exemple. Développement d'extension PHP7 hello word Cet article a présenté en détail comment créer une extension et fourni le téléchargement du code source.call_lib_fun()
Build lib library
Ajouter le fichier hello.h. Le code est le suivant :
#ifndef TEST_HEADER_FILE #define TEST_HEADER_FILE #include <stdlib.h> #include <string.h> char * show_site(); #endif
Ajouter le fichier hello.c. Le code est le suivant :
#include "hello.h" char * show_site() { char *site = malloc(15 * sizeof(char)); strcpy(site, "www.bo56.com"); return site; }
Utilisez ensuite la commande suivante pour générer le fichier lib library (bibliothèque dynamique) :
$ gcc -g -O0 -fPIC -shared -o hello.so ./hello.c
Cela générera un fichier de bibliothèque dynamique hello.so dans le répertoire courant. Les extensions des bibliothèques dynamiques dans différents systèmes d'exploitation peuvent être différentes. Par exemple, c'est dll sous windows, dylib sous mac, et donc sous linux.
Ensuite, copiez
hello.so dans le répertoire /usr/local/lib/ et nommez-le hello.so Copiez
hello.h dans le répertoire /usr/local/include/.
Augmenter la dépendance de l'extension à la bibliothèque dynamique. Ajoutez principalement les lignes de code suivantes :
PHP_ADD_LIBRARY_WITH_PATH(hello, /usr/local/lib/, SAY_SHARED_LIBADD) PHP_SUBST(SAY_SHARED_LIBADD)Écrivez le code d'extension
Ajoutez une référence à
.hello.h
#include "php_say.h" #include <stdio.h> //下面这行是增加的 #include "hello.h"
Ajout de la méthode
. Le code est le suivant :show_site()
PHP_FUNCTION(show_site) { char *site = show_site(); RETVAL_STRING(site); free(site); return; }résultat de l'appel php
<?php $result = show_site(); var_dump($result); ?>
Résultats de l'exécution
$php ./test.php string(12) "www.bo56.com"Interprétation du code
PHP_ADD_LIBRARY_WITH_PATH est le nom utilisé pour spécifiez la bibliothèque lib, l'adresse et d'autres informations. Le premier paramètre est le nom et le deuxième paramètre est l'adresse.
Ajoutez le fichier d'en-tête de la bibliothèque lib au fichier say.c. Utilisez
.#include "hello.h"
Dans le code d'extension, tout comme pour appeler les méthodes fournies par d'autres noyaux, appelez les méthodes de la bibliothèque lib.
Articles qui pourraient vous intéresser :
Pensez à la particularité de la balise volist en php dans les opérations ajax Explication détaillée de la balise volist dans thinkphpExplication des connaissances liées à l'implémentation PHP de la recherche du nœud d'entrée de l'anneau dans la liste chaînéeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!