PHP7 est l'une des versions PHP les plus utilisées, mais la plupart des développeurs connaissent moins les principes de développement sous-jacents du langage PHP. Dans cet article, nous repartirons de zéro et analyserons les principes de conception et de mise en œuvre du noyau PHP en détail pour vous aider à comprendre le mécanisme de fonctionnement sous-jacent de PHP.
Au cours du développement de PHP7, le noyau PHP adopte la méthode d'encapsulation orientée objet pour encapsuler le code fonctionnel associé dans la classe PHP correspondante. Les développeurs n'ont qu'à instancier ces classes et à appeler l'API correspondant pour utiliser les fonctions correspondantes.
Une chaîne en PHP est composée de plusieurs caractères. Voici l'exemple de code pour créer une chaîne:
Dans le noyau PHP, l'encapsulation de chaîne est implémentée via la structure Zend_string. Ce qui suit est la définition de la structure zend_string:
Grâce à la structure Zend_string, le noyau PHP met en œuvre la gestion automatique de la mémoire, ce qui réduit considérablement le fardeau des développeurs.
Les tableaux en PHP sont des structures de données très courantes utilisées pour stocker plusieurs données du même type. Dans le noyau PHP7, les tableaux sont implémentés via une structure de hachage. Voici un exemple d'utilisation d'un tableau:
Dans le noyau PHP, le hashtable stocke les données à travers des paires de valeurs clés. La valeur clé peut être de n'importe quel type et la valeur peut être de n'importe quel type. Ce qui suit est la définition de la structure de hachage:
Grâce au réseau de godets dans le hachage, les développeurs peuvent obtenir des paires de valeurs clés de chaque élément. L'insertion et la suppression des éléments sont effectuées via l'API fournie par le hashtable.
Le mécanisme de gestion de la mémoire de PHP comprend principalement deux méthodes:
Le mécanisme ZEND_MM est une méthode de gestion de la mémoire couramment utilisée et mature dans le noyau PHP, visant à réduire le nombre de demandes de mémoire. Pour la mémoire réutilisable, ZEND_MM sera mis en cache pour une utilisation ultérieure.
La couche sous-jacente PHP met en œuvre son propre mécanisme de recyclage GC, réduisant les frais généraux de gestion de la mémoire par le comptage de référence. Ce mécanisme automatisé de récupération de la mémoire est mis en œuvre dans le moteur Zend, réduisant considérablement les besoins de contrôle de la mémoire du manuel des développeurs.
Le noyau PHP prend en charge le développement modulaire et peut réaliser le développement de modules personnalisés via des bibliothèques de liens dynamiques. Les étapes générales pour développer des modules PHP sont les suivantes:
La première étape du développement des modules consiste à définir les informations de base du module. Utilisez la structure Zend_Module_entry pour définir les différentes propriétés d'un module. L'exemple est le suivant:
Lorsque le module est chargé, les fonctions du module peuvent être appelées. Vous pouvez définir les fonctions du module via zend_function_entry:
Après avoir terminé le développement du module, vous devez compiler le module dans un fichier .so et l'installer dans le répertoire du module PHP. PHP fournit des outils tels que phpize et configurer pour compiler et installer des modules.
Grâce à l'explication de cet article, nous avons une compréhension approfondie des principes de développement sous-jacents du noyau PHP, notamment Zend_string, l'emballage de hachage, le mécanisme Zend_Mm, le mécanisme de recyclage GC et le développement des modules PHP. J'espère que cet article peut vous aider à mieux comprendre le noyau PHP et appliquer ces connaissances au développement réel.