Maison  >  Article  >  cadre php  >  Mode Singleton du conteneur ThinkPHP

Mode Singleton du conteneur ThinkPHP

咔咔
咔咔original
2020-10-10 11:21:592612parcourir

Cet article se concentre principalement sur la mise en œuvre des conteneurs internes et des façades de la charpente comme référence,

Avant-propos

Avant cela, nous avons analysé l'analyse du code source du chargement automatique des classes et du chargement des fichiers de configuration. Cet article est le troisième article, qui analyse principalement le code source pour l'implémentation de. conteneurs et classes de façades. Et apprenez quelques points de connaissances pour implémenter cette fonction.

1. Mode Singleton

Apprentissage Il y a deux modèles de conception que vous devez comprendre avant les conteneurs et les façades, le mode singleton et le mode arbre d'enregistrement.

Donnez d’abord une brève explication du modèle singleton.

  • Avoir un constructeur et l'attribut est privé
  • Avoir une variable membre statique pour enregistrer l'instance de la classe
  • Avoir une méthode statique pour accéder à cette instance

Il s'agit d'un mode singleton simple implémenté par Kaka. Vérifiez s'il est cohérent avec les trois fonctionnalités majeures ci-dessus.

La variable statique est instance

Elle a une structure et est privée

La dernière est la méthode statique getInstance

Mode Singleton du conteneur ThinkPHPFaisons un test simple

Faisons un test simple

Mode Singleton du conteneur ThinkPHP Toujours en test dans le contrôleur d'index Afin de confirmer que sa classe n'a été instanciée qu'une seule fois, elle a été appelée quatre fois

Mode Singleton du conteneur ThinkPHPVisitez cette méthode pour y jeter un œil

new-class n'est exécuté qu'une seule fois, ce qui prouve directement que la classe créée n'est instanciée qu'une seule fois.

Une question que j'avais avant Kaka, voici pourquoi le constructeur utilise ici des attributs privés.

Avez-vous déjà eu cette question auparavant ? Kaka vous amènera à y répondre ensemble

La méthode du constructeur pour définir les propriétés privées dans cette classe consiste à empêcher sa classe d'être instanciée en externe.

Mode Singleton du conteneur ThinkPHPLorsque cette classe est instanciée en externe, l'erreur suivante sera signalée.

thinkphp/library/think/Container.phpAlors pourquoi est-ce que je mentionne le modèle singleton ici ! En effet,

sera utilisé dans le code source du prochain conteneur d'apprentissage. Par exemple, dans la classe Mode Singleton du conteneur ThinkPHP ci-dessous, il y a une instance pour obtenir le conteneur actuel.

Jusqu'à présent, le mode singleton a été simplement compris. Comprendre le mode singleton, c'est aussi mieux comprendre le conteneur.

La persévérance dans l'apprentissage, la persévérance dans le blogging et la persévérance dans le partage sont les convictions auxquelles Kaka a toujours adhéré depuis ses débuts. J'espère que les articles de Kaka sur le grand Internet pourront vous apporter un peu d'aide. Je m'appelle Kaka, à la prochaine fois.

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