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!

Zu den wirksamen Methoden zur Verhinderung fester Sitzungsangriffe gehören: 1. Regenerieren Sie die Sitzungs -ID, nachdem sich der Benutzer angemeldet hat; 2. Verwenden Sie einen sicheren Algorithmus für Sitzungs -ID -Generierung; 3.. Implementieren Sie den Timeout -Mechanismus für Sitzungen; 4. Verschlüsseln Sie Sitzungsdaten mithilfe von HTTPS. Diese Maßnahmen können sicherstellen, dass die Anwendung bei festgelegten Sitzungen unzerstörbar ist.

Die implementierende Sitzungsfreie Authentifizierung kann durch die Verwendung von JSONWEBTOKENS (JWT), einem tokenbasierten Authentifizierungssystem, erreicht werden, bei dem alle erforderlichen Informationen im Token ohne serverseitige Sitzungsspeicher gespeichert werden. 1) Verwenden Sie JWT, um Token zu generieren und zu überprüfen, 2) Stellen Sie sicher, dass HTTPS verwendet wird, um zu verhindern, dass Token abgefangen werden.

Zu den Sicherheitsrisiken von PHP -Sitzungen gehören hauptsächlich Sitzungshijacking, Sitzungsfixierung, Sitzungsvorhersage und Sitzungsvergiftung. 1. Session -Entführungen können durch Verwendung von HTTPS und Schutz von Cookies verhindert werden. 2. Die Sitzungsfixierung kann vermieden werden, indem die Sitzungs -ID regeneriert wird, bevor sich der Benutzer einmeldet. 4. Die Sitzungsvergiftung kann durch Überprüfung und Filterungsdaten verhindert werden.

Um eine PHP -Sitzung zu zerstören, müssen Sie zuerst die Sitzung starten, dann die Daten löschen und die Sitzungsdatei zerstören. 1. Verwenden Sie Session_Start (), um die Sitzung zu starten. 2. Verwenden Sie Session_unset (), um die Sitzungsdaten zu löschen. 3. Verwenden Sie schließlich Session_destroy (), um die Sitzungsdatei zu zerstören, um die Datensicherheit und die Ressourcenfreigabe zu gewährleisten.

Wie ändere ich den Standard -Sitzungsweg von PHP? Es kann durch die folgenden Schritte erreicht werden: Verwenden Sie Session_save_path ('/var/www/sessions'); Session_start (); in PHP -Skripten, um den Sitzungsspfad zu setzen. Setzen Sie in der Datei php.ini, um den Sitzungsspfad global zu ändern. Verwenden Sie Memcached oder Redis, um Sitzungsdaten wie ini_set ('Session.Save_handler', 'memcached') zu speichern; ini_set (

TomodifyDatainaphpSession, startTheSessionwithSession_Start (), dann $ _SessionToSet, modify, orremovevariables.1) startTheSession.2) setOrmodifySessionvariabling $ _Session.3) removeVariables mit ()

Arrays können in PHP -Sitzungen gespeichert werden. 1. Starten Sie die Sitzung und verwenden Sie Session_Start (). 2. Erstellen Sie ein Array und speichern Sie es in $ _Session. 3. Abrufen Sie das Array durch $ _Session ab. 4. Optimieren Sie Sitzungsdaten, um die Leistung zu verbessern.

Die PHP -Sitzungsmüllsammlung wird durch einen Wahrscheinlichkeitsmechanismus ausgelöst, um abgelaufene Sitzungsdaten zu beseitigen. 1) Legen Sie die Auslöserwahrscheinlichkeit und die Sitzungslebenszyklus in der Konfigurationsdatei ein. 2) Sie können Cron-Aufgaben verwenden, um Hochlastanwendungen zu optimieren. 3) Sie müssen die Häufigkeit und Leistung von Müllsammlungen ausgleichen, um Datenverlust zu vermeiden.


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

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Dreamweaver Mac
Visuelle Webentwicklungstools

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)
