Maison  >  Article  >  développement back-end  >  Une brève discussion sur la compréhension du mode PHP singleton et un exemple de code

Une brève discussion sur la compréhension du mode PHP singleton et un exemple de code

little bottle
little bottleavant
2019-04-19 16:05:502277parcourir

Cet article concerne la compréhension du mode PHP singleton. Les amis intéressés devraient venir se renseigner !

Pourquoi utiliser le modèle singleton ?
J'ai vérifié les informations en ligne et je les ai enregistrées pour pouvoir les vérifier plus tard.
Le mode Singleton, comme son nom l'indique, n'a qu'une seule instance. Cela peut économiser de la mémoire et des ressources, principalement parce que lorsque PHP gère la base de données, chaque nouvel objet consommera une certaine quantité de ressources.

Comme nous le savons tous, le langage PHP est un langage de script interprété. Ce mécanisme de fonctionnement permet de recycler toutes les ressources associées après l'interprétation et l'exécution de chaque page PHP. En d'autres termes, PHP n'a aucun moyen de faire résider un objet en mémoire au niveau du langage. Ceci est différent des types compilés tels que asp.net et Java. Par exemple, en Java, un singleton existera toujours tout au long du cycle de vie. l'application. Les variables sont au niveau de plusieurs pages

, ce qui peut vraiment rendre cette instance unique dans le cycle de vie de l'application. Cependant, en PHP, toutes les variables, qu'il s'agisse de variables globales ou de membres statiques de la classe, sont au niveau de la page. Chaque fois que la page est exécutée, un nouvel objet sera rétabli et sera effacé après l'exécution de la page. Il semble que PHP Le mode singleton n'a aucun sens, donc je pense que le mode PHP singleton n'est très significatif que lorsqu'il existe plusieurs scénarios d'application lorsqu'une seule requête de niveau

de page se produit et que la même ressource d'objet doit être partagée.

Sans plus tard, commençons par le code

<span style="font-size: 14px;"><span style="font-size: 12px;"><?php</span><br/><br/><span style="font-size: 12px;">class User</span><br/><span style="font-size: 12px;">{</span><br/><span style="font-size: 12px;">    /*</span><br/><span style="font-size: 12px;">     * 1、创建一个存放对象的私有化静态变量</span><br/><span style="font-size: 12px;">     * 2、私有化克隆方法</span><br/><span style="font-size: 12px;">     * 3、私有化构造方法</span><br/><span style="font-size: 12px;">     * 4、创建实例化对象的唯一入口</span><br/><span style="font-size: 12px;">     *</span><br/><span style="font-size: 12px;">     * **/</span><br/><span style="font-size: 12px;">    private static $_instance = &#39;&#39;;</span><br/><span style="font-size: 12px;">    private function __clone(){}</span><br/><span style="font-size: 12px;">    private function __construct(){}</span><br/><span style="font-size: 12px;">    static public function getInstance()</span><br/><span style="font-size: 12px;">    {</span><br/><span style="font-size: 12px;">        if(is_null(self::$_instance) || isset(self::$_instance)){</span><br/><span style="font-size: 12px;">            self::$_instance = new User();</span><br/><span style="font-size: 12px;">        }</span><br/><span style="font-size: 12px;">        return self::$_instance;</span><br/><span style="font-size: 12px;">    }</span><br/><span style="font-size: 12px;">    public function getIp()</span><br/><span style="font-size: 12px;">    {</span><br/><span style="font-size: 12px;">        return $_SERVER[&#39;SERVER_ADDR&#39;];</span><br/><span style="font-size: 12px;">    }</span><br/><span style="font-size: 12px;">}</span><br/><span style="font-size: 12px;">$op =  User::getInstance();</span><br/><span style="font-size: 12px;">echo $op->getIp();</span><br/><br/></span>

Tutoriels associés : Tutoriel vidéo 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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer