En tant que langage de script côté serveur populaire, PHP est largement utilisé dans le développement Web. Dans le développement quotidien, PHP utilise la valeur de la valeur par défaut, ce qui signifie que l'appel de fonction est passé une copie de la variable. Cependant, dans certains cas, ce que nous voulons passer, ce sont des références aux variables, en particulier en ce qui concerne l'optimisation de la mémoire et la gestion du cycle de vie des objets. Le mécanisme de référence faible introduit dans PHP 7.4 est de résoudre ces exigences.
La référence faible est un mode de référence spécial qui permet la référence à un objet mais ne l'empêche pas d'être collectée à la poubelle. Il s'agit d'une fonctionnalité très utile pour certains scénarios spécifiques tels que les systèmes de cache ou les architectures axées sur les événements.
En PHP, vous pouvez utiliser la classe FaibleReference pour créer une référence faible comme indiqué ci-dessous:
$object = new stdClass();
$weakRef = WeakReference::create($object);
Dans le code ci-dessus, nous instancions d'abord un objet d'objet $ , puis générons sa référence faible $ faiblee via la méthode FaibleReference :: Create () .
Pour obtenir l'objet pointé par une référence faible, vous pouvez utiliser la méthode get () :
$objectRef = $weakRef->get();
Si l'objet n'a pas été détruit, get () renvoie une référence à l'objet d'origine; Si l'objet a été détruit, null est retourné.
Lors de la construction d'un système de cache, il est généralement nécessaire d'enregistrer des objets pour un accès rapide ultérieur. Les méthodes de référence traditionnelles empêcheront les objets d'être détruits et provoqueront des déchets de mémoire. L'utilisation de références faibles peut référer temporairement des objets sans affecter le mécanisme de collecte des ordures, gérant ainsi la mémoire plus efficacement.
Lorsque deux objets se réfèrent l'un à l'autre, une référence circulaire est formée, empêchant le collecteur des ordures de libérer ces objets. Les références faibles fournissent un moyen de déconnecter la boucle afin que l'une des références n'empêche pas la destruction d'objets, réduisant efficacement le risque de fuites de mémoire.
Les programmes axés sur les événements impliquent souvent un grand nombre de relations contraignantes entre les événements et les processeurs. Si ces relations sont maintenues avec des références ordinaires, l'objet ne sera pas recyclé pendant longtemps. Des références faibles peuvent être utilisées pour gérer ces processeurs afin d'éviter l'occupation à long terme de la mémoire.
En introduisant un mécanisme de référence faible, les développeurs PHP peuvent gérer plus de manière flexible le cycle de vie des objets, en particulier dans des scénarios complexes tels que la mise en cache, la référence circulaire et le traitement d'événements. Les références faibles fournissent de meilleures méthodes de contrôle de la mémoire. La maîtrise et la fabrication de cette fonctionnalité peuvent aider à rédiger des applications PHP plus efficaces et robustes.