Maison  >  Article  >  développement back-end  >  Comment fonctionnent les fonctions personnalisées PHP et introduction à la programmation structurée

Comment fonctionnent les fonctions personnalisées PHP et introduction à la programmation structurée

伊谢尔伦
伊谢尔伦original
2017-05-05 12:01:002288parcourir

Les instructions de code dans la fonction seront exécutées quand et seulement après que la fonction soit appelée, et son but est d'accomplir certaines tâches spécifiques. Une fois la fonction exécutée, le contrôle reviendra à l'endroit où la fonction a été appelée et la fonction peut renvoyer des informations au programme sous la forme d'une valeur de retour. En utilisant des fonctions dans votre programme, vous pouvez faire de la programmation structurée. Dans la programmation structurée, chaque tâche est réalisée pièce par pièce à l’aide d’un code de programme indépendant. Les fonctions sont le moyen le plus idéal pour implémenter formellement ce "Segment de code Cheng Xun indépendant ", de sorte que la relation entre les fonctions et la programmation structurée est très étroite. La programmation structurée est excellente pour ses propres raisons, principalement les suivantes raisons importantes :

1. Programmation structurée Plus facile à écrire car les problèmes de programmation complexes sont divisés en plusieurs tâches plus petites et plus simples. Chaque tâche est effectuée par une fonction, et le code et les variables de la fonction sont indépendants du reste du programme. En abordant une tâche simple à la fois, la programmation devient plus rapide.

2. Les programmes structurés sont plus faciles à déboguer. Si du code dans le programme ne fonctionne pas correctement, la conception structurée permet de limiter le problème à un seul morceau de code spécifique, tel qu'une fonction spécifique. De cette façon, il est plus pratique de déboguer les erreurs et de les modifier. Il suffit de procéder étape par étape de haut en bas, de gauche à droite.

Un avantage non négligeable de la programmation structurée est qu'elle permet de gagner du temps. Si vous écrivez une fonction dans un programme qui exécute une tâche spécifique, vous pouvez l'utiliser dans un autre programme qui doit effectuer la même tâche. Même si le programme nécessite une tâche légèrement différente, il est plus facile de modifier une fonction existante que de la réécrire. Pensez-y, vous utilisez souvent echo() et var_dump(), même si vous devez d'abord confirmer la fonction du programme, vous devez faire une certaine planification, et dans le plan vous devez lister toutes les tâches spécifiques que le programme effectuera. Utilisez ensuite des fonctions pour écrire chaque tâche spécifique et appelez chaque fonction de tâche dans l'ordre d'exécution dans le programme principal pour former un programme structuré complet. La figure ci-dessous montre un programme contenant trois fonctions. Chaque fonction effectue une tâche spécifique et peut être appelée une ou plusieurs fois dans le programme principal. Chaque fois qu'une fonction est appelée, le contrôle est transmis à la fonction. Une fois la fonction exécutée, le contrôle revient à l'emplacement où la fonction a été appelée

comme indiqué dans la figure ci-dessous :

Comment fonctionnent les fonctions personnalisées PHP et introduction à la programmation structurée

php implémente un langage dynamique typique processus d'exécution : Après avoir obtenu un morceau de code, après analyse lexicale, analyse syntaxique et autres étapes, le programme source sera traduit en instructions (opcodes), puis la machine virtuelle ZEND exécutera ces instructions dans l'ordre pour terminer l'opération. Php lui-même est implémenté en C, donc les fonctions finalement appelées sont toutes des fonctions C. En fait, on peut considérer PHP comme un logiciel développé en C. Il n'est pas difficile de voir à partir de la description ci-dessus que l'exécution de fonctions en PHP est également traduite en opcodes pour l'appel. Chaque appel de fonction exécute en fait une ou plusieurs instructions.

Pour chaque fonction, zend est décrit par la structure de données suivante

typedef union _zend_function { 
zend_uchar type; /* MUST be the first element of this struct! */ 
struct { 
zend_uchar type; /* never used */ 
char *function_name; 
zend_class_entry *scope; 
zend_uint fn_flags; 
union _zend_function *prototype; 
zend_uint num_args; 
zend_uint required_num_args; 
zend_arg_info *arg_info; 
zend_bool pass_rest_by_reference; 
unsigned char return_reference; 
} common;

zend_op_array op_array; 
zend_internal_function internal_function; 
} zend_function;

typedef struct _zend_function_state { 
HashTable *function_symbol_table; 
zend_function *function; 
void *reserved[ZEND_MAX_RESERVED_RESOURCES]; 
} zend_function_state;

où type indique le type de fonction : fonction utilisateur, fonction intégrée, lourde fonction fonction de charge. Common contient les informations de base de la fonction, y compris le nom de la fonction, les informations sur les paramètres, les indicateurs de fonction (fonctions ordinaires, méthodes statiques, méthodes abstraites), etc. De plus, pour les fonctions utilisateur, il existe également une table de symboles de fonction qui enregistre les variables internes, etc., qui seront détaillées ultérieurement. Zend maintient une function_table globale, qui est une grande table de hachage. Lorsqu'une fonction est appelée, la fonction zend_function correspondante sera d'abord trouvée dans la table en fonction du nom de la fonction. Lors d'un appel de fonction, la machine virtuelle détermine la méthode d'appel en fonction du type. Différents types de fonctions ont des principes d'exécution différents.

【Tutoriels associés recommandés】

1. "php.cn Dugu Jiujian (4) - Tutoriel vidéo PHP "

2. Un ensemble complet de tutoriels vidéo sur la programmation PHP de l'entrée à la maîtrise

3

Tutoriels vidéo pratiques PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn