Maison  >  Article  >  développement back-end  >  Explication détaillée de la différence entre self et $this en PHP

Explication détaillée de la différence entre self et $this en PHP

小云云
小云云original
2018-03-14 10:56:141636parcourir

La programmation orientée objet (POO, Object Oriented Programming) est désormais devenue une compétence de base pour les programmeurs. L'utilisation d'idées POO pour la programmation avancée de PHP est très utile pour améliorer les capacités de programmation PHP et planifier l'architecture de développement Web.

Ici, je parle principalement de la différence entre ceci et les mots-clés personnels. Littéralement compris, il fait référence à cela et à soi-même. Permettez-moi d'abord de donner une explication préliminaire. Il s'agit d'un pointeur vers l'objet actuel (peut être considéré comme un pointeur en C), et self est un pointeur vers la classe actuelle. Nous utilisons fréquemment des pointeurs pour décrire ici.

Parce que j'utilise souvent des frameworks, je ne connais pas certains des mécanismes de fonctionnement et méthodes sous-jacents de PHP, j'aime donc étudier ces choses sous-jacentes récemment, même si les choses que j'écris ne sont pas très bonnes. , mais je l'ai fait étape par étape par moi-même, et c'est plus facile à comprendre maintenant. La plupart des informations sur Internet sont soit copiées du manuel et sont très officielles, soit c'est le même article. pour comprendre, donc je ne peux le faire que moi-même. Venez vous familiariser avec

1. self

1.self peut accéder aux propriétés statiques et aux méthodes statiques de cette classe, et peut y accéder. les propriétés statiques et les méthodes statiques de la classe parent. Lorsque vous utilisez self, vous n'avez pas besoin d'instancier

  1. class self_test {  
        static$instance;  
        publicfunction __construct(){  
            self::$instance = 'instance';//静态属性只能通过self来访问
        }  
        publicfunction tank(){  
            return self::$instance;//访问静态属性
        }  
    }  
    $str = new self_test();  
    echo$str->tank();

Sortie de page : instance

  1. class self_test {  
        static$instance;  
        publicfunction __construct(){  
            self::$instance = 'dell';  
        }  
        staticpublicfunction pentium(){  
            return self::$instance;//静态方法也可以继续访问静态变量,访问时需要加$
        }  
        publicfunction tank(){  
            return self::pentium();//访问静态方法pentium()
        }  
    }  
    $str = new self_test();  
    echo$str->tank();
    <.>
Sortie de page : Dell

2.self peut accéder aux constantes définies par const

  1. class self_test {  
        const  NAME = &#39;tancy&#39;;  
        publicfunction tank(){  
            return self::NAME;  
        }  
    }  
    $str = new self_test();  
    echo$str->tank();
Sortie de page : Tancy

2.this

1.this peut appeler des méthodes et des propriétés dans cette classe, ou peut appeler des méthodes et des propriétés réglables dans la classe parent On peut dire qu'à l'exception des constantes statiques et const, essentiellement tout le reste Vous pouvez l'utiliser pour contacter

  1. class self_test {  
        public$public;  
        private$private;  
        protected$protected;  
        publicfunction __construct(){  
            $this->public = &#39;public&#39;;  
            $this->private = &#39;private&#39;;  
            $this->protected = &#39;protected&#39;;  
        }  
        publicfunction tank(){  
            return$this->public;  
        }  
        publicfunction dell(){  
            return$this->private;  
        }  
        publicfunction datesrt(){  
            return$this->protected;  
        }  
    }  
    $str = new self_test();  
    echo$str->tank();  
    echo"</br>";  
    echo$str->dell();  
    echo"</br>";  
    echo$str->datesrt();
sortie de la page : publique

privée
protégée

一句话,self是引用静态类的类名,而$this是引用非静态类的实例名。
Recommandations associées :

Explication approfondie de php self et tutoriel $this_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