this und self in PHP

Olorunfemi Akinlua 18 August 2022
  1. OOP in PHP
  2. this und self in PHP
this und self in PHP

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 Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - PHP Class