Heim > Backend-Entwicklung > PHP-Tutorial > Entwicklung einer PHP-Erweiterung: Schreiben der ersten Erweiterung „Hello World'.

Entwicklung einer PHP-Erweiterung: Schreiben der ersten Erweiterung „Hello World'.

不言
Freigeben: 2023-03-23 18:30:01
Original
3369 Leute haben es durchsucht

Der Inhalt dieses Artikels besteht darin, Ihnen das Schreiben der ersten Erweiterung Hallo Welt in der PHP-Erweiterungsentwicklung mitzuteilen. Sie hat einen gewissen Referenzwert.

PHP-Erweiterung ist für Fortgeschrittene PHP-Programmierer Eine der Fähigkeiten, die ein beginnender PHP-Erweiterungsentwickler verstehen muss: Wie kann er eine ausgereifte Erweiterung entwickeln und in den fortgeschrittenen Bereich der PHP-Entwicklung einsteigen? Diese Reihe von Entwicklungs-Tutorials führt Sie Schritt für Schritt vom Einstieg in die fortgeschrittene Phase.
Diese Tutorialreihe wurde unter Linux entwickelt (Centos wird empfohlen), die PHP-Version ist 5.6 und es wird davon ausgegangen, dass Sie über gewisse Erfahrungen in Linux, Git-Betrieb und C/C++-Grundlage verfügen.
Wenn Sie Fragen haben und kommunizieren müssen, treten Sie bitte der technischen QQ-Austauschgruppe 32550793 bei, um mit mir zu kommunizieren.

Wir verwenden das benutzerfreundliche PHP-CPP-Framework, um PHP-Erweiterungen zu entwickeln. Wenn Sie über gewisse Linux-Betriebserfahrung und C++-Grundlagen verfügen, befolgen Sie die folgenden Schritte. Ich glaube, Sie können Ihre eigenen in weniger als 10 Schritten erstellen Minuten Der erste dehnt sich aus.
Die folgenden Demonstrationsvorgänge sind alle auf dem Linux CentOS-System abgeschlossen und die PHP5.6-Serie wurde im Voraus installiert.

1. PHP-CPP herunterladen und installieren

Wenn Sie PHP-CPP zum Kompilieren Ihrer eigenen PHP-Erweiterung verwenden möchten, müssen Sie zuerst den Quellcode von PHP-CPP herunterladen und kompilieren Installieren Sie es.
PHP-CPP verfügt über zwei Framework-Quellcodes, genannt PHP-CPP (neue Version) und PHP-CPP-LEGACY.
PHP-CPP (neue Version) eignet sich für die Entwicklung von PHP-7-Erweiterungen und PHP-CPP-LEGACY eignet sich für die Entwicklung von 5. Erweiterungen für jede PHP-Version sind verfügbar.
Unsere nachstehenden Vorgänge nehmen PHP-CPP-LEGACY als Beispiel.

Wenn Sie den Git-Befehl kennen, können Sie den folgenden Git-Befehl direkt in die Terminal-Befehlszeile eingeben.

# git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP-LEGACY.git
Nach dem Login kopieren

Es spielt keine Rolle, ob Sie Git nicht kennen. Sie können die Github-Warehouse-URL des Quellcodes direkt mit einem Browser öffnen, das komprimierte Quellcodepaket herunterladen und das Warehouse entpacken Die URL lautet
https://github.com/CopernicaM….

Geben Sie nach Abschluss des Downloads das Quellcodeverzeichnis von PHP-CPP-LEGACY ein und geben Sie den Befehl „make“ ein, um den Quellcode zu kompilieren. Nach Abschluss der Kompilierung werden die relevanten Klassenbibliotheken angezeigt, die für die Entwicklungserweiterung erforderlich sind generiert.

# make
Nach dem Login kopieren

Führen Sie dann den Befehl make install aus, um die generierte Klassenbibliothek und die zugehörigen Entwicklungs-Header-Dateien im Linux-System zu installieren. Sie können die Erweiterung später kompilieren, ohne die Header-Dateien und Klassenbibliotheksverzeichnisse automatisch zu konfigurieren.

# sudo make install
Nach dem Login kopieren

2. Laden Sie die erste Erweiterung helloworld herunter.

Der Quellcode der ersten Erweiterung helloworld wurde auf Github vorbereitet. Sie können ihn direkt mit dem Git-Befehl klonen oder manuell herunterladen.

# git clone https://github.com/elvisszhang/phpcpp_helloworld.git
Nach dem Login kopieren

Betreten Sie das Quellcodeverzeichnis von helloworld, öffnen Sie main.cpp. Sie können die folgende Codestruktur sehen, die alle mit chinesischen Kommentaren hinzugefügt wurde.
Die wichtigste davon ist die Funktion get_module, die Einstiegsfunktion der Erweiterung.

#include <phpcpp.h>
#include <iostream>

//这是PHP里面可以调用的接口函数
void say_hello()
{
    //输出一段欢迎
    Php::out << "hello world from my first extension" << std::endl;
}

/**
 *  告诉编译器get_module是个纯C函数
 */
extern "C" {
    
    /**
     *  本函数在PHP进程一打开就会被访问,并返回一个描述扩展信息的PHP结构指针
     */
    PHPCPP_EXPORT void *get_module() 
    {
        // 必须是static类型,因为扩展对象需要在PHP进程内常驻内存
        static Php::Extension extension("helloworld", "1.0.0");
        
        //这里可以添加你要暴露给PHP调用的函数
        extension.add<say_hello>("say_hello");
        
        // 返回扩展对象指针
        return extension;
    }
}
Nach dem Login kopieren

test.php ist ein Teil des PHP-Codes, der für erweiterte Tests verwendet wird.

<?php
say_hello();
Nach dem Login kopieren

3. Kompilieren Sie die erste Erweiterung helloworld

Das Kompilieren dieser Erweiterung ist sehr einfach, geben Sie einfach den Befehl make in die Terminal-Befehlszeile ein.

# make
g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp
g++ -shared -o helloworld.so main.o -lphpcpp
Nach dem Login kopieren

Wie erwartet sehen Sie die Erweiterungsdatei helloworld.so im Quellverzeichnis. Sie können feststellen, dass diese Datei sehr klein ist, nur 14 KB.
Aber wenn Sie jetzt den Befehl php -m eingeben, werden Sie feststellen, dass die Erweiterung helloworld nicht im PHP-Modul enthalten ist, da wir sie nicht in der PHP-Betriebsumgebung installiert haben.

4. Installieren Sie die erste Erweiterung helloworld

Hier stellen wir vorübergehend die Methode zur manuellen Installation der Erweiterung vor.

  • Schritt 1: Verwenden Sie zunächst den Befehl php-config, um den Speicherort der Erweiterung zu ermitteln

# php-config --extension-dir
/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226
Nach dem Login kopieren

Der oben gezeigte befindet sich auf meinem Server. Der Speicherort der Erweiterungsinstallation kann auf jedem Server unterschiedlich sein.

  • Schritt 2: Kopieren Sie dann helloworld.so in das Erweiterungsspeicherverzeichnis.

# cp helloworld.so /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
Nach dem Login kopieren
  • Schritt 3: Ändern Sie die php.ini-Datei und aktivieren Sie die Helloworld-Erweiterung

Öffnen Sie php. ini-Datei, fügen Sie die folgenden Konfigurationselemente hinzu und fügen Sie an einer beliebigen Stelle in php.ini eine neue Zeile hinzu.

extension = helloworld.so
Nach dem Login kopieren
  • Schritt 4: Bestätigen Sie, dass die Helloworld-Erweiterung erfolgreich installiert wurde

Verwenden Sie den Befehl php -m, um alle aktuellen PHP-Dateien anzuzeigen installierte Erweiterung.

# php -m | grep helloworld
helloworld
Nach dem Login kopieren

Der Antwort der obigen Befehlszeile nach zu urteilen, wurde die helloworld-Erweiterung erfolgreich installiert.

  • Schritt 5: Führen Sie test.php aus, um zu bestätigen, dass die registrierte Funktion verwendet werden kann

Führen Sie immer noch im erweiterten Quellcodeverzeichnis aus folgender Befehl

# php test.php
hello world from my first extension
Nach dem Login kopieren

Der Antwort aus der obigen Befehlszeile nach zu urteilen, wurde die Funktion say_hello, die wir über die Erweiterung bei PHP registriert haben, nicht sehr einfach ausgeführt, aber die aktuelle Erweiterung sagt nur Hallo und kann nichts Ernstes tun? Was die Eight Classics betrifft, werden wir sie später verbessern, damit er mehr Dinge tun kann.

Referenzen

PHP-CPP-Installation und Hallo Welt
PHP-CPP-offizielles Website-Tutorial

Verwandte Empfehlungen:

PHP-Erweiterungsentwicklung Vergleich und Einführung verwandter Entwicklungstechnologien

Das obige ist der detaillierte Inhalt vonEntwicklung einer PHP-Erweiterung: Schreiben der ersten Erweiterung „Hello World'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage