Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen self und $this in PHP

Detaillierte Erklärung des Unterschieds zwischen self und $this in PHP

小云云
小云云Original
2018-03-14 10:56:141652Durchsuche

Objektorientierte Programmierung (OOP, Object Oriented Programming) ist mittlerweile zu einer Grundkompetenz für Programmierer geworden. Die Verwendung von OOP-Ideen für die fortgeschrittene Programmierung von PHP ist für die Verbesserung der PHP-Programmierfunktionen und die Planung der Webentwicklungsarchitektur von großer Bedeutung.

Hier spreche ich hauptsächlich über den Unterschied zwischen den Schlüsselwörtern this und self. Im wörtlichen Sinne bezieht es sich auf dieses und auf sich selbst. Lassen Sie mich zunächst eine vorläufige Erklärung geben. Dies ist ein Zeiger auf das aktuelle Objekt (kann als Zeiger in C betrachtet werden), und self ist ein Zeiger auf die aktuelle Klasse. Zur Beschreibung verwenden wir hier häufig Zeiger.

Da ich häufig Frameworks verwende, kenne ich einige der zugrunde liegenden Betriebsmechanismen und Methoden von PHP nicht, daher studiere ich diese zugrunde liegenden Dinge in letzter Zeit gerne, obwohl die Dinge, die ich schreibe, nicht sehr gut sind , aber ich habe es Schritt für Schritt selbst gemacht, und die meisten Informationen im Internet sind jetzt entweder aus dem Handbuch kopiert und sehr offiziell, oder es handelt sich tatsächlich um denselben Artikel Um es zu verstehen, kann ich es nur selbst tun. Machen Sie sich mit

1. self

vertraut. 1. self kann auf die statischen Eigenschaften und statischen Methoden in dieser Klasse zugreifen die statischen Eigenschaften und statischen Methoden in der übergeordneten Klasse. Wenn Sie self verwenden, müssen Sie

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

nicht instanziieren. Seitenausgabe: Instanz

  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();

Seitenausgabe: Dell
2.self kann auf durch Konstanten definierte Konstanten zugreifen

  1. class self_test {  
        const  NAME = 'tancy';  
        publicfunction tank(){  
            return self::NAME;  
        }  
    }  
    $str = new self_test();  
    echo$str->tank();

Seitenausgabe: tancy

2.this

1.this kann Methoden und Attribute in dieser Klasse aufrufen und kann auch einstellbare Methoden und Attribute in der übergeordneten Klasse aufrufen. Mit Ausnahme von statischen und konstanten Konstanten , im Grunde alles andere. Damit können Sie Kontakt aufnehmen

  1. class self_test {  
        public$public;  
        private$private;  
        protected$protected;  
        publicfunction __construct(){  
            $this->public = 'public';  
            $this->private = 'private';  
            $this->protected = 'protected';  
        }  
        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();

Seitenausgabe: öffentlich
privat
geschützt

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

Verwandte Empfehlungen:

Ausführliche Erklärung von PHP Self und $this_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen self und $this in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn