PHP 中的 this 和 self

Olorunfemi Akinlua 2023年1月30日 2022年7月18日
  1. PHP 中的 OOP
  2. PHP 中的 thisself
PHP 中的 this 和 self

thisself 是物件導向程式設計 (OOP) 的元件屬性。OOP 是 PHP 的一個元件特性,它是一種程式設計過程,而不是程序式程式設計,我們在其中編寫執行資料操作的函式。

使用 OOP,我們可以建立同時具有資料和函式(方法)的物件。

不過,OOP 提供了一種更快、更全面的方式來使用任何支援它的語言(包括 PHP)進行編碼。某些特性或屬性可能很複雜,例如 thisself,並且會使使用 OOP 變得不好玩。

本文將討論 thisself 有何不同以及如何在 PHP 中使用它們。

PHP 中的 OOP

OOP 為你的 PHP 程式提供了清晰的結構,並允許你遵循不要重複自己的流行原則。

類和方法是 PHP 中 OOP 的重要組成部分,可以使用以下程式碼片段輕鬆建立。

<?php

class Good {

    public $propertyOne;
    public $propertyTwo;
    private $propertyThree;

    function methodOne($propertyOne) {
        //
    }
}

?>

$propertyOne$propertyTwo$propertyThree 是類 Good 的屬性,methodOne() 是一個方法。

我們可以使用此程式碼片段建立物件、OOP 的整個目標以及類和方法的原因。

$goodOne = new Good();

PHP 中的 thisself

為了擴充套件當前程式碼,我們可以建立一個方法來設定類 Good$propertyOne

class Good {

		//...

		function setGoodName($propertyOne) {
        $this->propertyOne = $propertyOne;
    }

    function showGoodName() {
        return $this->propertyOne;
    }

}

$this 關鍵字指的是當前物件,並且僅在類中的方法內部可用。因此,如果我們想在 PHP 程式碼中使用 $this,它必須在我們類的方法中。

在程式碼片段的情況下,$this 關鍵字指向當前物件,以允許我們在 Good 類中呼叫 $propertyOne

讓我們利用我們建立的方法。

$book = new Good();
$book->setGoodName("PHP for Dummies");

echo $book->showGoodName();

程式碼片段的輸出如下。

PHP for Dummies

讓我們進一步擴充套件我們的 PHP 程式碼,併為類 Good 新增一個關於靜態儲存 Name 的屬性,將其設為私有,並將該屬性返回給 constructor

class Good {

		//...
    private static $storeName = "JK Book Store";

    function __construct()
    {
        return self::$storeName;
    }

		//...
}

self 關鍵字指的是當前類,並允許我們訪問類和靜態變數,如上面的程式碼片段所示。self 關鍵字使用範圍解析運算子:: 訪問或引用靜態類成員。

因此,self$this 之間的一個很大區別是 self 訪問靜態或類變數或方法,而 $this 訪問非靜態和物件變數和方法。

因此,在使用 OOP 時,要知道我們在物件(類的例項)內部使用 $this,而對於類和靜態屬性使用 self

完整原始碼:

<?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

相關文章 - PHP Class