Maison >développement back-end >tutoriel php >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

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

jacklove
jackloveoriginal
2018-06-30 17:57:521875parcourir

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()

Implémentation du code

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/.

Modifier le fichier config.m4

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 thinkphp


Explication 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ée


Ce 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn