自己とPHPのこれ

PHPは、クラスおよびその他のオブジェクト指向の構造をサポートしています。 PHPクラスの静的関数と変数は、クラスの特定のインスタンス(つまり、オブジェクト)に関連付けられていません。 objectclassの違いをご覧ください。

代わりに、静的関数と変数はクラス定義自体に関連付けられています。 つまり、クラスのすべてのインスタンスは同じ静的変数を共有します。 クラスのメソッド(関数)のコンテキスト内で、 self::を使用して静的変数と関数にアクセスします。 this->を使用して、クラスのオブジェクト(インスタンス)のコンテキストで他のメソッドと変数が使用されます。

比較表

自己対この比較表
自己 この
静的関数で使用できますはい番号
アクセス可能なクラス変数とメソッド自己::$ this->(PHP> 5.3では、$ this :: $ fooを使用して静的変数で$ thisを使用できます。$ fooが静的変数の場合、$ this-> fooは未定義のままです。)
インスタンス化されたオブジェクトが必要番号はい

PHPでの自己vsこれ-例

 class exampleClass {public static $ foo; パブリック$ bar; public function regularFunction(){echo $ this-> bar; } public static function staticFunction(){echo self :: $ foo; } public static function anotherStatFn(){self :: staticFunction(); } public function regularFnUsingStaticVar(){echo self :: $ foo; } //注:PHP 5.3以降、self :: $ barの代わりに$ this :: $ barを使用できます} exampleClass :: $ foo = "Hello"; $ obj =新しいexampleClass(); $ obj-> bar = "World!"; exampleClass :: staticFunction(); / * Helloを出力します* / $ obj-> regularFunction(); / * World! * / 

静的関数は静的変数のみを使用できます。 静的関数と変数は、 self :: functionName()またはself :: variableNameを介して参照されます。 上記の例では、静的変数はクラス名(exampleClass :: $ foo)で、またはクラスの静的メソッド[ 名前付きstaticFunction() ]内で使用される場合はself : :(self :: $ foo)で参照されます。

クラスの通常の関数と変数には、参照するオブジェクトコンテキストが必要です。 オブジェクトコンテキストなしでは存在できません。 オブジェクトコンテキストは$ thisによって提供されます。 上記の例では、$ barは通常の変数であるため、$ obj-> bar(変数objを持つオブジェクトコンテキスト内)または$ this-> bar(オブジェクトのメソッド内のオブジェクトコンテキスト内)として参照されます。 )。

selfは変数を暗示するのではなく、クラス自体を表すため、 selfは先行する$を使用しません。 $ thisは特定の変数を参照するため、前に$が付きます。

関連記事