Heim Backend-Entwicklung PHP-Tutorial PHP OOP Part-Static-Eigenschaft, Methode und this vs. self

PHP OOP Part-Static-Eigenschaft, Methode und this vs. self

Jan 04, 2025 pm 04:36 PM

PHP OOP Part-Static property, method and 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();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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();
Nach dem Login kopieren
Nach dem Login kopieren

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();
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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();
Nach dem Login kopieren
Nach dem Login kopieren

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!

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

Video Face Swap

Video Face Swap

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

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)

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.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Wie debugge ich den CLI -Modus in PhpStorm? Wie debugge ich den CLI -Modus in PhpStorm? Apr 01, 2025 pm 02:57 PM

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

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.

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

See all articles