Ein Neuling hat eine Frage zum Unterricht

WBOY
Freigeben: 2016-09-15 11:31:00
Original
1172 Leute haben es durchsucht

Was ist der Unterschied zwischen den folgenden beiden Möglichkeiten, Methoden in einer Klasse aufzurufen?

1

<code>class MyClass {
    public function myfunc() {
        // ...
    }
}

$myclass = new MyClass;
$myclass->myfunc();</code>
Nach dem Login kopieren
Nach dem Login kopieren

2

<code>class MyClass {
    public static function myfunc() {
        // ...
    }
}

MyClass::myfunc();</code>
Nach dem Login kopieren
Nach dem Login kopieren

Eine besteht darin, sie zuerst zu instanziieren und dann aufzurufen, die andere darin, die statische Methode direkt zu deklarieren und direkt aufzurufen. Was ist der Unterschied zwischen diesen beiden? Unter welchen Umständen sollten sie verwendet werden?

Antwortinhalt:

Was ist der Unterschied zwischen den folgenden beiden Möglichkeiten, Methoden in einer Klasse aufzurufen?

1

<code>class MyClass {
    public function myfunc() {
        // ...
    }
}

$myclass = new MyClass;
$myclass->myfunc();</code>
Nach dem Login kopieren
Nach dem Login kopieren

2

<code>class MyClass {
    public static function myfunc() {
        // ...
    }
}

MyClass::myfunc();</code>
Nach dem Login kopieren
Nach dem Login kopieren

Eine besteht darin, sie zuerst zu instanziieren und dann aufzurufen, die andere darin, die statische Methode direkt zu deklarieren und direkt aufzurufen. Was ist der Unterschied zwischen diesen beiden? Unter welchen Umständen sollten sie verwendet werden?

Das allgemeine Verständnis lautet:

Der erste kann $this->a; self::$a; static::$a; $this->a(); self::a(); static::a() und andere Methoden verwenden, um relevante Daten und Methoden der aktuellen Klasse zu erhalten

Die zweite Methode kann nur self::$a; static::$a; self::a(); static::a() und andere Methoden verwenden, um relevante statische Daten und statische Methoden der aktuellen Klasse zu erhalten

Sie können dies in

static nicht verwenden, da das aktuelle Objekt nicht instanziiert wurde.

Wenn ein Objekt a) eine Utility-Methode hat und b) nicht von einer Instanz des Objekts abhängt, sind statische Methoden am besten geeignet.

Aber in der tatsächlichen Entwicklung hat a) ein höheres Gewicht, das heißt, wenn möglich, können Entwickler für eine Tool-Methode, die tatsächlich weit verbreitet ist, verschiedene Methoden verwenden, um sie statisch zu machen, wie z. B.

<code>public static function getTotal(array $numbers) {
    $self = new self();
    return $self->getTotalNumber($numbers);
}</code>
Nach dem Login kopieren

Nur ​​um beim Aufruf ein paar Zeilen Code zu sparen. Es spielt keine Rolle, ob es gut oder schlecht ist, es hängt von den Umständen ab.

Darüber hinaus kommen statische Methoden auch häufiger in Objekten im Singleton-Modus vor. Die Grundursache ist dieselbe wie oben und wird nicht im Detail erläutert.

Verwandte Etiketten:
php
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage