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.
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
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
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
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
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; } }
test.php ist ein Teil des PHP-Codes, der für erweiterte Tests verwendet wird.
<?php say_hello();
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
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.
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
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/
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
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
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
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.
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!