this und self in PHP
![this und self in PHP](/img/PHP/ag-feature-image---php-class-this-or-self.webp)
this
und self
sind Komponenteneigenschaften der objektorientierten Programmierung (OOP). OOP ist eine Komponentenfunktion von PHP als Programmierverfahren und nicht als prozedurale Programmierung, bei der wir Funktionen schreiben, die Datenoperationen ausführen.
Mit OOP können wir Objekte erstellen, die sowohl Daten als auch Funktionen (Methoden) haben.
OOP bietet jedoch eine schnellere und umfassendere Möglichkeit, in jeder Sprache zu programmieren, die es unterstützt, einschließlich PHP. Bestimmte Funktionen oder Eigenschaften können kompliziert sein, wie z. B. this
und self
, und können dazu führen, dass die Verwendung von OOP keinen Spaß macht.
In diesem Artikel wird erläutert, wie sich this
und self
unterscheiden und wie man sie in PHP verwendet.
OOP in PHP
OOP bietet eine klare Struktur für Ihre PHP-Programme und ermöglicht es Ihnen, dem beliebten Prinzip Don't Repeat Yourself
zu folgen.
Klassen und Methoden sind ein großer Teil von OOP in PHP und können einfach mit dem folgenden Code-Snippet erstellt werden.
<?php
class Good {
public $propertyOne;
public $propertyTwo;
private $propertyThree;
function methodOne($propertyOne) {
//
}
}
?>
$propertyOne
, $propertyTwo
, $propertyThree
sind Eigenschaften der Klasse Good
und methodOne()
ist eine Methode.
Wir können Objekte, das gesamte Ziel von OOP und den Grund für die Klassen und Methoden erstellen, indem wir dieses Code-Snippet verwenden.
$goodOne = new Good();
this
und self
in PHP
Um den aktuellen Code zu erweitern, können wir eine Methode erstellen, um die $propertyOne
der Klasse Good
zu setzen.
class Good {
//...
function setGoodName($propertyOne) {
$this->propertyOne = $propertyOne;
}
function showGoodName() {
return $this->propertyOne;
}
}
Das Schlüsselwort $this
bezieht sich auf das aktuelle Objekt und ist nur innerhalb von Methoden innerhalb einer Klasse verfügbar. Wenn wir also $this
in unserem PHP-Code verwenden wollen, muss es sich innerhalb einer Methode innerhalb unserer Klasse befinden.
Im Fall des Code-Snippets zeigt das Schlüsselwort $this
auf das aktuelle Objekt, damit wir $propertyOne
innerhalb der Klasse Good
aufrufen können.
Nutzen wir die von uns erstellten Methoden.
$book = new Good();
$book->setGoodName("PHP for Dummies");
echo $book->showGoodName();
Die Ausgabe des Code-Snippets ist unten.
PHP for Dummies
Lassen Sie uns unseren PHP-Code weiter erweitern und der Klasse Good
eine Eigenschaft über den statischen Speicher Name
hinzufügen, ihn privat machen und die Eigenschaft an einen Konstruktor zurückgeben.
class Good {
//...
private static $storeName = "JK Book Store";
function __construct()
{
return self::$storeName;
}
//...
}
Das Schlüsselwort self
bezieht sich auf die aktuelle Klasse und ermöglicht uns den Zugriff auf Klassen- und statische Variablen wie im obigen Code-Snippet. Das Schlüsselwort self
verwendet den Bereichsauflösungsoperator ::
, um auf statische Klassenmitglieder zuzugreifen oder auf diese zu verweisen.
Daher besteht ein großer Unterschied zwischen self
und $this
darin, dass self
auf statische oder Klassenvariablen oder -methoden zugreift und $this
auf nichtstatische und Objektvariablen und -methoden zugreift.
Wenn Sie also mit OOP arbeiten, sollten Sie wissen, dass wir $this
innerhalb von Objekten (Instanz einer Klasse) und self
für Klassen und statische Eigenschaften verwenden.
Vollständiger Quellcode:
<?php
class Good {
// properties
public $propertyOne;
public $propertyTwo;
private $propertyThree;
private static $storeName = "JK Book Store";
// methods
function __construct()
{
return self::$storeName;
}
function setGoodName($propertyOne) {
$this->propertyOne = $propertyOne;
}
function showGoodName() {
return $this->propertyOne;
}
}
// creating a object
$book = new Good();
$book->setGoodName("PHP for Dummies");
echo $book->showGoodName();
?>
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn