L'extension PHP est une bibliothèque dynamique développée en utilisant le langage C pour améliorer la fonctionnalité native du langage PHP. Grâce à des extensions personnalisées, les développeurs peuvent ajouter de nouvelles fonctions, classes et structures de données à PHP, réalisant ainsi les percées dans les performances et les fonctionnalités. Par rapport aux versions précédentes, PHP7 a fait de nombreuses optimisations en termes d'architecture d'extension, avec des performances considérablement améliorées et une syntaxe plus standardisée.
Lors du développement d'extensions de PHP7, le passage des paramètres est l'un des liens principaux, comprenant principalement deux façons de passer des valeurs et des références. La mise en œuvre de ces deux mécanismes de transfert de paramètres sera expliquée par des exemples spécifiques ci-dessous.
La méthode de transfert de valeur signifie que la modification des valeurs de paramètres dans la fonction n'affectera pas la variable d'origine. Convient aux scénarios où seules les valeurs de paramètres sont lues.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// Modifier les valeurs des paramètres
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
Dans le code ci-dessus, les paramètres entiers passés sont analysés via la fonction zend_parse_parameters , et les multipliés, et enfin le résultat traité est renvoyé à l'aide de retour_long .
Utilisez des paramètres de référence pour modifier directement la valeur de la variable passée et fonctionner sur l'adresse mémoire, ce qui convient aux fonctions qui nécessitent une modification des paramètres d'entrée.
PHP_FUNCTION(my_function) {
int arg1;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &arg1) == FAILURE) {
return;
}
// Modifier les valeurs des paramètres
arg1 = arg1 * 2;
RETURN_LONG(arg1);
}
Bien que le formulaire de code soit similaire aux valeurs de passage, dans la logique de traitement sous-jacente, la méthode de référence peut manipuler directement la mémoire des paramètres, affectant ainsi les données d'origine transmises par l'appelant.
Les valeurs de retour sont tout aussi importantes dans le développement étendu, et PHP7 fournit un support efficace pour le retour des données via une série de définitions de macro.
Si vous devez renvoyer une chaîne, vous pouvez utiliser la macro return_string .
PHP_FUNCTION(my_function) {
RETURN_STRING("Hello, world", 1);
}
Le deuxième paramètre 1 indique ici s'il faut copier la chaîne, passer 1 signifie que PHP alloue automatiquement et copiera les données de chaîne.
La façon de retourner des entiers est plus directe.
PHP_FUNCTION(my_function) {
RETURN_LONG(42);
}
Grâce à la macro return_long , les valeurs entières peuvent être renvoyées à la couche PHP pour les appels de script.
Cet article présente des méthodes de traitement courantes pour passer la valeur de retour dans le développement d'extension PHP7, y compris la différence entre le passage de la valeur et la référence du paramètre, ainsi que les méthodes de mise en œuvre de retour des chaînes et des entiers. La maîtrise de ces capacités de base aidera à développer des modules d'expansion PHP plus efficaces et stables, libérant davantage les avantages de la performance du langage C dans le développement de PHP.