Heute fragte der Chef nach dem Unterschied zwischen „New Static“ und „New Self“ im Unternehmen. Keines der zehn Programme im Unternehmen hatte eine Antwort. . .
Nachdem ich nach Hause kam, ging ich nach Baidu, um mehr über den Unterschied zwischen den beiden zu erfahren:
Verwenden Sie self:: oder __CLASS__ Der statische Verweis auf die aktuelle Klasse hängt von der Klasse ab, in der die aktuelle Methode definiert ist:
mit static:: wird nicht mehr in die Klasse geparst, in der die aktuelle Die Methode ist zwar definiert, wird aber tatsächlich zum berechneten Zeitpunkt ausgeführt. Es kann auch als „statische Bindung“ bezeichnet werden, da es für Aufrufe statischer Methoden verwendet werden kann (aber nicht darauf beschränkt ist).
In einfachen Worten bezieht sich self auf die Klasse, in der es geschrieben ist, und diese Klasse wird tatsächlich als sogenannte späte statische Bindung bezeichnet. Static repräsentiert die verwendete Klasse, also die Klasse, die Sie sind Verwenden in der übergeordneten Klasse Schreiben Sie static,
und verwenden Sie dieses static dann direkt/indirekt über Unterklassen. Dieses static bezieht sich auf diese Unterklasse, daher ist static $this sehr ähnlich, aber static kann kann für statische Methoden und Eigenschaften usw. verwendet werden.
Bitte sehen Sie sich die Beispiele an
<?<span>php </span><span>class</span><span> Person { </span><span>public</span><span>static</span><span>function</span><span> name() { </span><span>echo</span> "xiaosan"<span>; } </span><span>public</span><span>static</span><span>function</span><span> callself() { self</span>::<span>name(); } </span><span>public</span><span>static</span><span>function</span><span> callstatic() { </span><span>static</span>::<span>name(); } } </span><span>class</span> Man <span>extends</span><span> Person { </span><span>public</span><span>static</span><span>function</span><span> name() { </span><span>echo</span> "gaojin"<span>; } } Man</span>::name(); <span>//</span><span> output: gaojin</span>Person::callself(); <span>//</span><span> output: xiaosan</span>Person::callstatic(); <span>//</span><span> output:gaojin</span>?>
Der Herausgeber studiert weiter
Das Obige stellt den Unterschied zwischen New Static und New Self in PHP vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.