FAST ZPP相应的宏方法可以查看官方网站 https://wiki.php.net/rfc/fast_zpp#proposal
返回值
方法的返回值是使用RETURN_ Code
Implementieren Sie die Methode default_value h2> default_value Methode Quellcode der PHP-Erweiterung: rrreee
Codebeschreibung
Parameter abrufen
In PHP7 gibt es zwei Methoden zum Abrufen von Parametern bereitgestellt. zend_parse_parameters und FAST ZPP-Modus.
zend_parse_parameters
Vor PHP7 wurde die Funktion zend_parse_parameters verwendet, um Parameter zu erhalten. Die Funktion dieser Funktion besteht darin, die eingehenden Parameter in die entsprechenden Typen im PHP-Kernel umzuwandeln, damit sie in PHP-Erweiterungen verwendet werden können. Parameterbeschreibung: Der erste Parameter, die Anzahl der Parameter. Im Allgemeinen verwenden Sie einfach ZEND_NUM_ARGS(), keine Änderung erforderlich. Der zweite Parameter ist die Formatzeichenfolge. Die Funktion dieser Formatzeichenfolge besteht darin, die Konvertierungsbeziehung zwischen den eingehenden Parametern und dem PHP-Kerntyp anzugeben.
Die Bedeutung von S|z im Code ist: S bedeutet, dass der Parameter eine Zeichenfolge ist. Konvertieren Sie die eingehenden Parameter in den Typ zend_string.
|. bedeutet, dass die folgenden Parameter optional sind. Es kann weitergegeben werden oder nicht. 🎜z gibt an, dass es sich bei den Parametern um mehrere Typen handelt. Konvertieren Sie die eingehenden Parameter in den ZVAL-Typ. 🎜🎜Darüber hinaus gibt es einige Spezifizierer, die Aufmerksamkeit erfordern: 🎜! Wenn eine Nullvariable in der PHP-Sprache empfangen wird, wird sie direkt in NULL in der C-Sprache konvertiert, anstatt sie in ein zval vom Typ IS_NULL zu kapseln. 🎜/ Wenn die übergebene Variable einen Zval mit anderen Variablen teilt und keine Referenz ist, wird eine erzwungene Trennung durchgeführt. Der neue Zval ist_ref__gc==0 und refcount__gc==1.🎜🎜Weitere Bedeutungen formatierter Zeichenfolgen finden Sie im offiziellen Webseite. https://wiki.php.net/rfc/fast_zpp🎜
FAST ZPP
🎜Neue Methode in PHP7 bereitgestellt. Es dient dazu, die Leistung der Parameteranalyse zu verbessern. Für häufig verwendete Methoden empfiehlt sich die Verwendung der FAST ZPP-Methode. 🎜So verwenden Sie: 🎜Beginnen Sie mit ZEND_PARSE_PARAMETERS_START(1, 2). 🎜Der erste Parameter gibt die Anzahl der Parameter an, die übergeben werden müssen, und der zweite Parameter gibt die maximale Anzahl der Parameter an, die übergeben werden können. 🎜Ende mit ZEND_PARSE_PARAMETERS_END();. 🎜Die Mitte ist das Parsen der eingehenden Parameter. 🎜Es ist erwähnenswert, dass die Makromethode von FAST ZPP im Allgemeinen eins zu eins dem Spezifizierer von zend_parse_parameters entspricht. Zum Beispiel: 🎜Z_PARAM_OPTIONAL entspricht |🎜Z_PARAM_STR entspricht S🎜Die Methode Z_PARAM_ZVAL_EX ist jedoch etwas Besonderes. Es entspricht zwei Spezifizierern, nämlich ! und /. ! Entspricht dem zweiten Parameter der Makromethode. / entspricht dem dritten Parameter der Makromethode. Wenn Sie es aktivieren möchten, setzen Sie es einfach auf 1. 🎜🎜Die entsprechende Makromethode von FAST ZPP kann auf der offiziellen Website https://wiki.php.net/rfc/fast_zpp#proposal eingesehen werden🎜
Rückgabewert
🎜Der Rückgabewert der Methode ist to Verwenden Sie RETURN_Die Makromethode, die mit code> beginnt, gibt zurück. Häufig verwendete Makromethoden sind: 🎜RETURN_NULL() Gibt null zurück🎜RETURN_LONG(l) Gibt den Ganzzahltyp zurück🎜RETURN_DOUBLE(d) Gibt den Gleitkommatyp zurück🎜RETURN_STR(s) Gibt einen String zurück. Der Parameter ist ein zend_string * Zeiger 🎜RETURN_STRING(s) Gibt einen String zurück. Der Parameter ist ein char * Zeiger 🎜RETURN_STRINGL(s, l) gibt einen String zurück. Der zweite Parameter ist die Stringlänge. 🎜RETURN_EMPTY_STRING() Gibt eine leere Zeichenfolge zurück. 🎜RETURN_ARR(r) Gibt ein Array zurück. Parameter sind zend_array*-Zeiger. 🎜RETURN_OBJ(r) gibt ein Objekt zurück. Parameter sind zend_object*-Zeiger. 🎜RETURN_ZVAL(zv, copy, dtor) gibt einen beliebigen Typ zurück. Parameter sind zval*-Zeiger. 🎜RETURN_FALSE Gibt „false“ zurück🎜RETURN_TRUE Gibt „true“ zurück🎜🎜
Das obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung des Rückgabewerts der PHP7-Erweiterungsentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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