PHP における this と self
 
this と self は、オブジェクト指向プログラミング(OOP)のコンポーネントプロパティです。OOP は、データ操作を実行する関数を作成する手続き型プログラミングではなく、プログラミングプロシージャとしての PHP のコンポーネント機能です。
OOP を使用すると、データと関数(メソッド)の両方を持つオブジェクトを作成できます。
ただし、OOP は、PHP を含め、OOP をサポートする任意の言語でコーディングするためのより高速で包括的な方法を提供します。this や self などの特定の機能やプロパティは複雑になる可能性があり、OOP の使用を面白くしない可能性があります。
この記事では、this と self の違いと、PHP での使用方法について説明します。
PHP での OOP
OOP は、PHP プログラムに明確な構造を提供し、一般的な原則である Don'tRepeatYourself に従うことができます。
クラスとメソッドは PHP の OOP の大きな部分であり、次のコードスニペットを使用して簡単に作成できます。
<?php
class Good {
    public $propertyOne;
    public $propertyTwo;
    private $propertyThree;
    function methodOne($propertyOne) {
        //
    }
}
?>
$propertyOne、$propertyTwo、$propertyThree はクラス Good のプロパティであり、methodOne() はメソッドです。
このコードスニペットを使用して、オブジェクト、OOP の全体的な目標、およびクラスとメソッドの理由を作成できます。
$goodOne = new Good();
PHP の this と self
現在のコードを拡張するために、クラス 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 コードをさらに拡張し、静的ストア Name に関するプロパティをクラス Good に追加し、それをプライベートにして、プロパティをコンストラクターに返します。
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 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