PHP OOP Part-Static-Eigenschaft, Methode und this vs. self
In dieser Serie werde ich die Grundlagen der objektorientierten PHP-Programmierung (OOP) behandeln. Der Inhalt wird in aufeinanderfolgende Teile gegliedert, die sich jeweils auf ein bestimmtes Thema konzentrieren. Wenn Sie ein Anfänger sind oder mit OOP-Konzepten nicht vertraut sind, soll diese Serie Sie Schritt für Schritt anleiten. In diesem Teil werde ich über die statische Eigenschaft, die Methode und this vs. self in PHP diskutieren. Beginnen wir gemeinsam die Reise zum Erlernen von PHP OOP!
Was ist Eigenschaft und Methode?
Lassen Sie uns zunächst versuchen, Eigenschaften und Methoden zu verstehen. Wenn wir mit einer Klasse mehrere Objekte erstellen, wird jedem Objekt ein separater Speicherort zugewiesen. Dadurch werden alle Eigenschaften und Methoden dieses Objekts auch diesem bestimmten Speicherort zugewiesen.
Das bedeutet, dass, wenn wir eine Eigenschaft eines Objekts ändern, die Änderung nur auf dieses bestimmte Objekt beschränkt ist. Es wirkt sich nicht auf andere Objekte aus, da die Eigenschaften und Methoden einer Klasse mit den jeweiligen Objekten dieser Klasse verknüpft sind.
Um von außerhalb der Klasse auf diese Eigenschaften oder Methoden zuzugreifen, müssen wir ein Objekt dieser Klasse erstellen. Wenn wir jedoch innerhalb der Klasse auf diese Eigenschaften oder Methoden zugreifen möchten, können wir das Schlüsselwort $this verwenden. Das Schlüsselwort $this repräsentiert das aktuelle Objekt der Klasse. Wir werden später mehr über das Schlüsselwort $this erfahren. Schauen wir uns das folgende Beispiel an:
Codebeispiel
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $tesla = new Car('Zip', 'Blue'); $tesla->getValue();
In diesem Beispiel können wir sehen, dass wir für den Zugriff auf die Eigenschaften der Klasse das Schlüsselwort $this innerhalb der Methoden derselben Klasse verwendet haben. Um eine beliebige Methode dieser Klasse von außen nutzen zu können, haben wir ebenfalls ein Objekt der Klasse erstellt. Auf diese Weise verwenden wir normalerweise die normalen Eigenschaften oder Methoden einer Klasse.
Was sind statische Eigenschaften und Methoden?
Statische Eigenschaften oder Methoden funktionieren jedoch anders. Wenn wir eine Klasse definieren, wird ihr nur einmal ein Speicherort zugewiesen. Wenn wir statische Eigenschaften oder Methoden in einer Klasse definieren, werden diese ebenfalls einem bestimmten Speicherort neben der Klasse selbst zugewiesen, jedoch nur einmal.
Wenn wir später eine statische Eigenschaft oder Methode ändern, wirkt sich die Änderung daher auf alle Instanzen der Klasse aus. Mit anderen Worten: Wo auch immer die statische Eigenschaft oder Methode verwendet wird, ist ihr aktualisierter Wert verfügbar.
Wenn wir von außerhalb der Klasse auf statische Eigenschaften oder Methoden zugreifen möchten, können wir den :: (Bereichsauflösungsoperator) verwenden, ohne ein Objekt zu erstellen. Alternativ können wir auch nach dem Anlegen eines Objekts darauf zugreifen. Um innerhalb der Klasse darauf zuzugreifen, können wir das Schlüsselwort self oder den Klassennamen selbst verwenden. Hier stellt das Schlüsselwort self die Klasse dar.
Wir werden das Schlüsselwort self später genauer untersuchen. Schauen wir uns das folgende Beispiel an:
Codebeispiel
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $tesla = new Car('Zip', 'Blue'); $tesla->getValue();
In diesem Beispiel können wir sehen, dass wir für den Zugriff auf die statischen Eigenschaften der Klasse das Schlüsselwort self innerhalb der Methoden derselben Klasse verwendet haben. Um außerdem eine statische Methode von außerhalb der Klasse zu verwenden, haben wir ein Objekt der Klasse erstellt. Wir könnten jedoch auch direkt darauf zugreifen, indem wir den Klassennamen zusammen mit dem :: (Bereichsauflösungsoperator) verwenden, ohne ein Objekt zu erstellen. Auf diese Weise verwenden wir normalerweise die statischen Eigenschaften oder Methoden einer Klasse.
Im obigen Beispiel können wir sehen, dass wir mit der Car-Klasse zwei Objekte, $toyota und $bmw, mit unterschiedlichen Daten erstellt haben. Nun wollen wir auf die Werte dieser Objekte zugreifen. Wenn wir den obigen Code ausführen, sehen wir die folgende Ausgabe:
Codebeispiel
class Car { public static $name; public static $color; function __construct($name, $color) { self::$name = $name; self::$color = $color; } public static function getValue() { echo "Car name: " . self::$name . "\n"; echo "Car color: " . self::$color . "\n"; } } $toyota = new Car('Toyota', 'Black'); $bmw = new Car('BMW', 'Orange'); $toyota::getValue(); $bmw::getValue(); Car::getValue();
Wir können sehen, dass beide Objekte die gleichen Werte anzeigen. Mit anderen Worten: Die Werte, die wir erhalten, stammen vom zuletzt erstellten Objekt. Selbst wenn wir versuchen, direkt über die Klasse auf die Werte zuzugreifen, erhalten wir immer noch dieselben Werte, d. h. die Werte des zweiten Objekts.
Der Grund dafür ist ganz klar. Wie bereits erwähnt, werden statische Eigenschaften oder Methoden an einem einzigen Speicherort erstellt. Wenn die statischen Eigenschaften oder Methoden von irgendwoher geändert werden, wirkt sich die Änderung auf alle Instanzen der Klasse aus.
Als wir im obigen Beispiel das zweite Objekt erstellten, änderten sich die Werte der Eigenschaften, sobald das Objekt erstellt wurde. Diese Änderung wirkte sich auch auf das zuvor erstellte Objekt aus, da alle Objekte der Klasse dieselben statischen Eigenschaften oder Methoden verwenden.
Es ist wichtig zu bedenken, dass statische Eigenschaften oder Methoden einer Klasse nicht auf die gleiche Weise wie normale Klasseneigenschaften oder -methoden verwendet werden können. Sie können nicht mit dem Operator → darauf zugreifen. Stattdessen müssen Sie den ::(Bereichsauflösungsoperator) verwenden, unabhängig davon, ob Sie von innerhalb oder außerhalb der Klasse darauf zugreifen.
Schlüsselwort $this vs. self
Was ist $this?
Wir haben bereits die Verwendung der Schlüsselwörter $this und self gesehen. Lassen Sie uns nun tiefer in diese Konzepte eintauchen, um sie besser zu verstehen.
$this ist ein integriertes PHP-Schlüsselwort. Wenn wir ein oder mehrere Objekte mithilfe einer Klasse erstellen, kann auf die normalen Eigenschaften und Methoden, die in der Klasse definiert sind, mit dem Schlüsselwort $this innerhalb der Klasse zugegriffen werden.
Jetzt wissen wir, dass eine definierte Klasse nur einmal einem bestimmten Speicherort zugewiesen wird. Dies könnte die Frage aufwerfen: Wenn wir mehrere Objekte aus dieser Klasse erstellen, greift das Schlüsselwort $this dann nur einmal für alle Objekte auf die Eigenschaften oder Methoden zu?
Die Antwort ist „Nein“. Dies liegt daran, dass das Schlüsselwort $this, wie wir bereits besprochen haben, nicht die Klasse selbst darstellt, sondern das von dieser Klasse erstellte Objekt. Mit anderen Worten, $this steht in direktem Zusammenhang mit dem Objekt. Infolgedessen greift das Schlüsselwort $this für jedes erstellte Objekt für jedes Objekt separat auf die Eigenschaften und Methoden der Klasse zu. Schauen wir uns das folgende Beispiel an:
class Car { public $name; public $color; function __construct(string $name, string $color) { $this->name = $name; $this->color = $color; } public function getValue() { echo "Car name: $this->name\n"; echo "Car color: $this->color\n"; } } $tesla = new Car('Zip', 'Blue'); $tesla->getValue();
Im vorherigen Beispiel haben wir es mehrmals verwendet, aber die Verwendung von $this wurde nicht im Detail besprochen. Nachdem wir nun ein gewisses Verständnis von $this gewonnen haben, können wir seine Verwendung besser verstehen. Mit dieser Klasse haben wir Objekte erstellt. Jetzt verstehen wir, dass das Schlüsselwort $this für jedes Objekt separat auf die Eigenschaften zugreift.
Es ist jedoch wichtig zu beachten, dass das Schlüsselwort $this nicht innerhalb einer statischen Methode verwendet werden kann. Warum es nicht verwendet werden kann, wird in Kürze erklärt.
Was ist das Schlüsselwort self?
Wir wissen bereits, dass eine Klasse beim Definieren nur einmal einem Speicherort zugewiesen wird. Ebenso werden alle statischen Eigenschaften und Methoden innerhalb dieser Klasse zusammen mit der Klasse nur einmal dem Speicherort zugewiesen.
Wenn wir Objekte mit dieser Klasse erstellen, werden die statischen Eigenschaften oder Methoden daher nicht für jedes Objekt separat erstellt. Aus diesem Grund können wir mit dem Schlüsselwort $this nicht auf diese statischen Eigenschaften oder Methoden zugreifen. Das Schlüsselwort $this stellt das Objekt der Klasse dar, und da statische Eigenschaften oder Methoden sich nicht auf ein Objekt, sondern direkt auf die Klasse selbst beziehen, kann mit $this nicht auf sie zugegriffen werden.
Um auf statische Eigenschaften oder Methoden innerhalb der Klasse zuzugreifen, verwenden wir das Schlüsselwort self oder den Klassennamen zusammen mit dem ::(Bereichsauflösungsoperator). Dies liegt daran, dass das Schlüsselwort self die Klasse selbst darstellt. Schauen wir uns das folgende Beispiel an:
class Car { public static $name; public static $color; function __construct($name, $color) { self::$name = $name; self::$color = $color; } public static function getValue() { echo "Car name: " . self::$name . "\n"; echo "Car color: " . self::$color . "\n"; } } $toyota = new Car('Toyota', 'Black'); $bmw = new Car('BMW', 'Orange'); $toyota::getValue(); $bmw::getValue(); Car::getValue();
In diesem Beispiel sehen wir, dass wir mithilfe des Klassennamens oder des Schlüsselworts self mit dem ::scope-Auflösungsoperator problemlos auf statische Mitglieder innerhalb einer nicht statischen Methode zugreifen können, da sie mit der Klasse verknüpft sind. Um auf sie zuzugreifen, müssen wir daher kein separates Objekt erstellen.
Wenn wir jedoch innerhalb einer statischen Methode auf nicht statische Mitglieder zugreifen möchten, müssen wir das Schlüsselwort $this verwenden. Wir wissen jedoch, dass das Schlüsselwort $this nicht innerhalb einer statischen Methode verwendet werden kann, da $this mit dem Objekt verknüpft ist, während nicht-statische Elemente nicht mit dem Objekt verknüpft sind. Aus diesem Grund können wir das Schlüsselwort $this nicht innerhalb einer statischen Methode verwenden.
Wenn wir jedoch auf nicht statische Mitglieder innerhalb einer statischen Methode zugreifen müssen, können wir eine Instanz oder ein Objekt der Klasse innerhalb der statischen Methode erstellen und dann das Schlüsselwort $this verwenden, um darauf zuzugreifen, wie im obigen Beispiel gezeigt .
Ich hoffe, dass Ihnen dies ein klareres Verständnis für die Verwendung der Schlüsselwörter „$this“ und „self“ vermittelt. Das ist alles für heute; wir machen in der nächsten Lektion weiter.
Sie können sich mit mir auf GitHub und Linkedin verbinden.
Das obige ist der detaillierte Inhalt vonPHP OOP Part-Static-Eigenschaft, Methode und this vs. self. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Die Verwendung von Vorverarbeitungsanweisungen und PDO in PHP kann SQL -Injektionsangriffe effektiv verhindern. 1) Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen und den Fehlermodus festzulegen. 2) Erstellen Sie Vorverarbeitungsanweisungen über die Vorbereitungsmethode und übergeben Sie Daten mit Platzhaltern und führen Sie Methoden aus. 3) Abfrageergebnisse verarbeiten und die Sicherheit und Leistung des Codes sicherstellen.

PHP verwendet MySQLI- und PDO-Erweiterungen, um in Datenbankvorgängen und serverseitiger Logikverarbeitung zu interagieren und die serverseitige Logik durch Funktionen wie Sitzungsverwaltung zu verarbeiten. 1) Verwenden Sie MySQLI oder PDO, um eine Verbindung zur Datenbank herzustellen und SQL -Abfragen auszuführen. 2) Behandeln Sie HTTP -Anforderungen und Benutzerstatus über Sitzungsverwaltung und andere Funktionen. 3) Verwenden Sie Transaktionen, um die Atomizität von Datenbankvorgängen sicherzustellen. 4) Verhindern Sie die SQL -Injektion, verwenden Sie Ausnahmebehandlung und Schließen von Verbindungen zum Debuggen. 5) Optimieren Sie die Leistung durch Indexierung und Cache, schreiben Sie hochlesbarer Code und führen Sie die Fehlerbehandlung durch.

PHP wird verwendet, um dynamische Websites zu erstellen. Zu den Kernfunktionen gehören: 1. Dynamische Inhalte generieren und Webseiten in Echtzeit generieren, indem Sie eine Verbindung mit der Datenbank herstellen; 2. Verarbeiten Sie Benutzerinteraktions- und Formulareinreichungen, überprüfen Sie Eingaben und reagieren Sie auf Operationen. 3. Verwalten Sie Sitzungen und Benutzerauthentifizierung, um eine personalisierte Erfahrung zu bieten. 4. Optimieren Sie die Leistung und befolgen Sie die Best Practices, um die Effizienz und Sicherheit der Website zu verbessern.

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.
