Heim  >  Artikel  >  Backend-Entwicklung  >  Kann PHP private statische Methoden haben?

Kann PHP private statische Methoden haben?

青灯夜游
青灯夜游Original
2021-06-02 18:52:192218Durchsuche

php kann private statische Methoden haben. Statische private Methoden bieten eine Möglichkeit, statischen Code vor der Außenseite der Klasse zu verbergen; dies kann nützlich sein, wenn mehrere verschiedene Methoden (statisch oder nicht statisch) ihn verwenden müssen, d. h. Code wiederverwendet werden muss.

Kann PHP private statische Methoden haben?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Ich verstehe, dass statisch bedeutet, dass ein Objekt nicht instanziiert werden muss, damit die Eigenschaften/Methoden verfügbar sind. Ich verstehe auch, dass dies sowohl für private Eigenschaften und Methoden als auch für öffentliche Methoden gilt. Ich möchte wissen, welche Vorteile statische private Funktionen Ihnen bieten können. Zum Beispiel:

class Beer {
    static private $beertype = "IPA";
    private function getBeerType() {
            return self::$beertype;
    }
    static public function BeerInfo() {
            return self::getBeerType();
    }
}
print Beer::BeerInfo() . "\n";

Solange getBeerType() von der statischen öffentlichen Methode aufgerufen wird, wird die private Methode einwandfrei ausgeführt, ohne das Objekt zu instanziieren. Wenn eine statische öffentliche Methode Zugriff auf alle privaten Methoden (statisch und nicht statisch) hat, welchen Vorteil hat es dann, eine Methode als statisch privat zu deklarieren?

Wenn die strikte Fehlerberichterstattung aktiviert ist, erhalte ich eine Warnung, dass ich getBeerType() statisch machen sollte, obwohl es mir trotzdem erlaubt, den Code auszuführen. Ich habe einige Nachforschungen angestellt und es scheint, dass andere Sprachen (Java) Sie dazu zwingen, eine private Methode als statisch zu deklarieren, wenn eine statische öffentliche Methode aufgerufen wird. Sieht so aus, als ob Sie mit PHP damit durchkommen. Gibt es eine Möglichkeit, es zu zwingen, einen Fehler auszulösen und nicht auszuführen?

Statische private Methoden bieten eine Möglichkeit, statischen Code von außerhalb der Klasse zu verbergen. Dies kann nützlich sein, wenn mehrere verschiedene Methoden (statisch oder nicht statisch) es verwenden müssen, d. h. Code-Wiederverwendung.

Statische Methoden und statische Variablen (manchmal auch Klassenmethoden und Klassenvariablen genannt) sind eine Möglichkeit, Code und Daten in einen Namespace einzufügen. Sie können sich Klassenvariablen auch als an die Klasse selbst angehängte Variablen vorstellen, von denen es (per Definition) nur eine gibt, im Gegensatz zu Instanzen der Klasse, von denen es null, eine oder mehrere geben kann. Mithilfe von Klassenmethoden und Klassenvariablen kann mit Eigenschaften gearbeitet werden, die nicht nur über alle Instanzen hinweg gleich bleiben, sondern auch tatsächlich gleich sind.

Ein Beispiel für eine Klassenvariable ist ein Datenbankhandler in einem ORM-Entitätsobjekt. Alle Instanzen sind ihre eigenen Objekte, aber sie benötigen alle Zugriff auf denselben Datenbank-Handler, um sich selbst laden und speichern zu können.

Privat vs. öffentlich ist eine völlig unterschiedliche Qualität, ich bezweifle, dass Sie über etwas stolpern. Private Methoden können nicht aufgerufen werden und auf private Variablen kann nicht von Code außerhalb der Klasse aus zugegriffen werden. Private Methoden werden normalerweise verwendet, um „interne“ Logik für ein Objekt zu implementieren, auf das außerhalb des Objekts nicht zugegriffen werden kann. Diese Einschränkung kann durch Instanzmethoden und Klassenmethoden erreicht werden.

Ein Beispiel für eine private Klassenmethode kann eine Factory-Methode sein. Es kann drei Factory-Aufrufe zum Erstellen von Objekten geben, die sich hinsichtlich der bereitgestellten Argumente unterscheiden können. Die meisten Vorgänge sind jedoch gleich. Es geht also in die private statische Methode über, die von der nicht privaten Factory-Methode aufgerufen wird.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonKann PHP private statische Methoden haben?. 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