Heim Backend-Entwicklung PHP-Tutorial PHP中new static() 和 new self() 的区别介绍_php技巧

PHP中new static() 和 new self() 的区别介绍_php技巧

May 16, 2016 pm 08:26 PM
new php 区别

长夜漫漫啊!

今天领导本地搭建一个站。发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行。

改着改着发现了一个地方

复制代码 代码如下:

return new static($val);

这尼玛是神马,只见过
复制代码 代码如下:

return new self($val);

于是上网查了下,他们两个的区别。

self – 就是这个类,是代码段里面的这个类。

static – PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。

还是看看老外的专业解释吧。

self refers to the same class whose method the new operation takes place in.

static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.

In the following example, B inherits both methods from A. self is bound to A because it's defined in A‘s implementation of the first method, whereas static is bound to the called class (also see  get_called_class() ).

复制代码 代码如下:

class A {
    public static function get_self() {
        return new self();
    }

    public static function get_static() {
        return new static();
    }
}

class B extends A {}

echo get_class(B::get_self());  // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A


这个例子基本上一看就懂了吧。

原理了解了,但是问题还没有解决,如何解决掉 return new static($val); 这个问题呢?

其实也简单就是用 get_class($this); 如下

复制代码 代码如下:

class A {
    public function create1() {
        $class = get_class($this);
    return new $class();
    }
    public function create2() {
        return new static();
    }
}

class B extends A {

}

$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));

/*
The result
string(1) "B"
string(1) "B"
*/

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welchen Austausch ist Nexo? Welchen Austausch ist Nexo? Mar 05, 2025 pm 07:39 PM

Nexo: Es ist nicht nur ein Kryptowährungsaustausch, sondern auch Ihr digitaler Finanzmanager. Es ermöglicht Benutzern, Kredite in Kryptowährung als Sicherheiten zu erhalten und Dienstleistungen bereitzustellen, um Zinsen zu verdienen. Während Nexo auch Kryptowährungs -Kauf-, Verkaufs- und Einlösungsfähigkeiten anbietet, ist das Kerngeschäft die Krypto -Kreditvergabe. In diesem Artikel wird das Betriebsmodell und die Sicherheit von Nexo eingehend untersucht, um den Anlegern ein umfassenderes Verständnis zu vermitteln. Das Betriebsmodell von Nexo wurde im Jahr 2018 gegründet und hat seinen Hauptsitz in Zug, Schweiz, und ist ein Pionier auf dem Gebiet der digitalen Finanzen. Es unterscheidet sich von anderen zentralen Börsen und konzentriert sich mehr auf die Bereitstellung umfassender Finanzdienstleistungen. Benutzer können Kryptowährungen kaufen, verkaufen, handeln, ohne Vermögenswerte zu verkaufen und

Der Unterschied zwischen Ether und Bitcoin, was ist der Unterschied zwischen Ether und Bitcoin Der Unterschied zwischen Ether und Bitcoin, was ist der Unterschied zwischen Ether und Bitcoin Mar 19, 2025 pm 04:54 PM

Der Unterschied zwischen Ethereum und Bitcoin ist signifikant. Technisch gesehen verwendet Bitcoin POW, und Ether hat sich von POW nach POS verlagert. Die Handelsgeschwindigkeit ist für Bitcoin langsam und Ethereum ist schnell. In Anwendungsszenarien konzentriert sich Bitcoin auf den Zahlungsspeicher, während Ether intelligente Verträge und DApps unterstützt. In Bezug auf die Ausgabe beträgt der Gesamtbetrag von Bitcoin 21 Millionen und es gibt keine feste Gesamtmenge an Ethermünzen. Jede Sicherheitsherausforderung ist verfügbar. In Bezug auf den Marktwert ist Bitcoin an erster Stelle, und die Preisschwankungen beider sind groß, aber aufgrund unterschiedlicher Merkmale ist der Preistrend von Ethereum einzigartig.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was ist der Unterschied zwischen Bohnenbrot und Deepseek Was ist der Unterschied zwischen Bohnenbrot und Deepseek Mar 12, 2025 pm 01:24 PM

Der Kernunterschied zwischen Bohnenbrötchen und Deepseek ist die Genauigkeit und Komplexität der Wiederholung. 1. Doubao basiert auf dem Schlüsselwort, einfach und direkt, mit geringen Kosten, aber geringer Genauigkeit und ist nur für strukturierte Daten geeignet. Die endgültige Auswahl hängt vom Anwendungsszenario und den Ressourcenbeschränkungen ab.

Krypto -Investitionsmentalität ist sehr wichtig! Wie vermeiden Sie unnötige Sorgen und treffen Sie korrekte Entscheidungen? Krypto -Investitionsmentalität ist sehr wichtig! Wie vermeiden Sie unnötige Sorgen und treffen Sie korrekte Entscheidungen? Mar 05, 2025 pm 07:24 PM

Angst, Unsicherheit und Zweifel an Kryptoinvestitionen: Wie kann er fundierte Entscheidungen treffen? Viele Kryptoinvestoren stehen vor Angst vor „Dies ist der letzte Zyklus“ sowie Bedenken hinsichtlich der Dauer des Bullenmarktes sowie dem Druck anderer, was zusammen zu schlechten Investitionsentscheidungen führt. In diesem Artikel wird untersucht, wie diese Herausforderungen überwunden und intelligentere Investitionsentscheidungen treffen können. Potenzielles Risiko: Ablenkung: Verjüngen Sie blind und ignorieren Sie den Wert von Kernvermögen. Pessimismus und Zögern: Unsicherheit führt zu mangelndem Vertrauen, der Unfähigkeit, lange Zeit zu halten und sogar aus dem Markt zu verlassen. Mangel an Glauben: Mangel an eingehenden Forschungen zu Projekten und kann nicht mit der Marktvolatilität fertig werden. Mangelnde Gewinnstrategien: Positionen aus Angst vor Rückziehungen frühzeitig und fehlende potenzielle Renditen vorzeitig. Bewältigungsstrategien: 1. Fokus auf Kernbereiche:

Detaillierte Einführung in Ouyi Okex Öffnungs- und Schließzeit Detaillierte Einführung in Ouyi Okex Öffnungs- und Schließzeit Mar 18, 2025 pm 01:06 PM

Die Ouyi Okex Digital Asset Trading Platform unterscheidet sich vom traditionellen Wertpapiermarkt. Die Plattform wird jedoch im Voraus bekannt geben und die Handelszeit oder -regeln bei Systemwartungs -Upgrades oder speziellen Marktereignissen (z. B. extreme Marktbedingungen verursachen, die schwerwiegende Marktschwankungen verursachen), z. Daher wird empfohlen, dass Benutzer auf Plattformankündigungen und Markttrends genau Aufmerksamkeit schenken, Handelsmöglichkeiten nutzen und im Risikomanagement gute Arbeit leisten. Nur durch das Verständnis von Ouyi Okex Handelszeit und Regelanpassungen können Sie sich auf dem Markt für digitale Währung wohl fühlen.

Der Unterschied zwischen Bohnenbrot und Deepseek Der Unterschied zwischen Bohnenbrot und Deepseek Mar 12, 2025 pm 01:57 PM

Der Hauptunterschied zwischen Doubao und Deepseek ist: 1. DuaBao ist eine Keyword -Suchmaschine, die auf dem Schlüsselwort -Matching abhängt. 2. Die Quelle für Bohnensackdaten ist breit, aber die Qualität ist ungleichmäßig. 3. Die Bean -Bun -Ergebnisse werden in Listenformular dargestellt, und Deepseek kann umfangreichere Antworten und Kontextinformationen liefern. 4. Bohnenbrötchen sind einfach zu bedienen, und Deepseek erfordert möglicherweise komplexere Abfrageanweisungen. Bohnenbrot eignet sich daher zum schnellen Finden von Informationen, während Deepseek für eingehende semantische Such- und Informationsabbau geeignet ist, und die Auswahl hängt von den spezifischen Bedürfnissen ab.

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

See all articles