Maison >développement back-end >tutoriel php >Explication détaillée de la façon d'utiliser la bibliothèque lib en PHP7 basée sur les fonctions

Explication détaillée de la façon d'utiliser la bibliothèque lib en PHP7 basée sur les fonctions

小云云
小云云original
2018-01-16 13:48:301666parcourir

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 les compétences d'encapsulation et d'opération d'appel de l'extension de bibliothèque lib en PHP7 sous forme d'exemples. J'espère que cela pourra aider tout le monde.

Préface

Tout d'abord, parlons de ce qu'est une bibliothèque lib. Une 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 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
hello.h est copié 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ésultat de l'exécution


$php ./test.php
string(12) "www.bo56.com"

Interprétation du code

PHP_ADD_LIBRARY_WITH_PATH est utilisé pour spécifier le nom, l'adresse et d'autres informations de la bibliothèque bibliothèque. 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.

Recommandations associées :

Gestion des cookies en Python (2) bibliothèque cookielib

Comment utiliser la bibliothèque pdflib pour lire des fichiers pdf Contenu

Utilisez la bibliothèque urllib de Python pour soumettre des formulaires WEB


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