Die PHP -Erweiterung ist eine dynamische Bibliothek, die mit C -Sprache entwickelt wurde, um die native Funktionalität der PHP -Sprache zu verbessern. Durch benutzerdefinierte Erweiterungen können Entwickler PHP neue Funktionen, Klassen und Datenstrukturen hinzufügen und so Durchbrüche in Bezug auf Leistung und Funktionalität erzielen. Im Vergleich zu früheren Versionen hat PHP7 viele Optimierungen in Bezug auf die Erweiterungsarchitektur mit einer deutlich verbesserten Leistung und einer stärker standardisierten Syntax durchgeführt.
Bei der Entwicklung von PHP7 -Erweiterungen ist die Übergabe von Parametern eine der Kernverbindungen, die hauptsächlich zwei Möglichkeiten zur Übergabe von Werten und Referenzen enthalten. Die Implementierung dieser beiden Parameterübertragungsmechanismen wird anhand spezifischer Beispiele nachstehend erläutert.
Die Wertübertragungsmethode bedeutet, dass die Änderung der Parameterwerte innerhalb der Funktion die ursprüngliche Variable nicht beeinflusst. Geeignet für Szenarien, in denen nur Parameterwerte gelesen werden.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// Ändern Sie die Parameterwerte
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
Im obigen Code werden die übergebenen Ganzzahlparameter über die Funktion Zend_Parse_Parameters analysiert und multipliziert sie schließlich. Schließlich wird das verarbeitete Ergebnis mit return_long zurückgegeben.
Verwenden Sie Referenzparameter, um den Wert der bestandenen Variablen direkt zu ändern und mit der Speicheradresse zu arbeiten, die für Funktionen geeignet ist, die eine Änderung der Eingabeparameter erfordern.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// Ändern Sie die Parameterwerte
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
Obwohl das Codeformular den Werten ähnlich ist, kann in der zugrunde liegenden Verarbeitungslogik die Referenzmethode den Parameterspeicher direkt manipulieren und damit die vom Anrufer übergebenen ursprünglichen Daten beeinflussen.
Rückgabewerte sind in der erweiterten Entwicklung gleichermaßen wichtig, und PHP7 bietet eine effiziente Unterstützung für die Rückgabe von Daten über eine Reihe von Makrodefinitionen.
Wenn Sie eine Zeichenfolge zurückgeben müssen, können Sie das Makro return_string verwenden.
PHP_FUNCTION(my_function) {
RETURN_STRING("Hello, world", 1);
}
Der zweite Parameter 1 gibt hier an, ob das Kopieren der Zeichenfolge 1 kopiert wird. 1 bedeutet, dass PHP die Zeichenfolge Daten automatisch zuordnet und kopiert.
Die Art und Weise, die Ganzzahlen zurückzugeben, ist direkter.
PHP_FUNCTION(my_function) {
RETURN_LONG(42);
}
Über das Makro return_long können ganzzahlige Werte für Skriptaufrufe an die PHP -Ebene zurückgegeben werden.
In diesem Artikel werden gemeinsame Verarbeitungsmethoden für die Übergabe des Rückgabewerts in der Entwicklung von PHP7 -Erweiterung eingeführt, einschließlich der Differenz zwischen der Übergabe des Werts und der Referenzierung des Parameters sowie den Implementierungsmethoden zur Rückgabe von Zeichenfolgen und Ganzzahlen. Durch die Beherrschung dieser grundlegenden Funktionen werden effizientere und stabilere PHP -Expansionsmodule entwickelt und die Leistungsvorteile der C -Sprache in der PHP -Entwicklung weiter ausgelöst.