PHP における this キーワードと self キーワードの違い:
1. self はクラスを表し、$this はオブジェクトを表します
2 .Can $this が使用される場合は、self を使用する必要があります。self が使用できる場合、$this
3 は使用できません。$this は静的メソッドでは使用できません。静的メソッドはクラスによってアクセスされます。
PHP での this キーワードと self キーワードの使用法:
self は静的クラスを参照するクラス名で、$this は静的クラスのインスタンスを参照します。非静的クラス名。
静的プロパティとメソッド。静的プロパティとメソッドのみにアクセスでき、非静的プロパティとメソッドにはクラスからアクセスできません。
静的プロパティと静的メソッドが作成されるとき、呼び出すことができるこのクラスのインスタンスが存在しない可能性があるためです。
静的プロパティはメモリ内に 1 つのコピーのみを持ち、すべてのインスタンスによって共有されます。
現在のクラスの静的メンバーにアクセスするには、self::
キーワードを使用します。
クラスのすべてのインスタンスは、クラス内の静的プロパティを共有します。
言い換えると、メモリ内に複数のインスタンスがある場合でも、静的属性のコピーは 1 つだけです。
次の例では、counter $count 属性が設定され、プライベートおよび静的な変更が設定されます。
このように、外部の世界は $count 属性に直接アクセスできません。プログラムを実行した結果、複数のインスタンスが同じ静的 $count 属性を使用していることもわかります。
<?php class user { private static $count = 0 ; //记录所有用户的登录情况. public function __construct() { self::$count = self::$count + 1; } public function getCount() { return self::$count; } public function __destruct() { self::$count = self::$count - 1; } } $user1 = new user(); $user2 = new user(); $user3 = new user(); echo "now here have " . $user1->getCount() . " user"; echo "<br />"; unset($user3); echo "now here have " . $user1->getCount() . " user"; ?>
静的プロパティは直接呼び出されます
静的プロパティはインスタンス化せずに直接使用でき、クラスが作成される前に使用されます。 . そのまま使えます。
使用されるメソッドは次のとおりです: クラス名::静的プロパティ名
<?php class Math { public static $pi = 3.14; } // 求一个半径3的园的面积。 $r = 3; echo "半径是 $r 的面积是<br />"; echo Math::$pi * $r * $r; echo "<br /><br />"; //这里我觉得 3.14 不够精确,我把它设置的更精确。 Math::$pi = 3.141592653589793; echo "半径是 $r 的面积是<br />"; echo Math::$pi * $r * $r; ?>
クラスは作成されず、静的プロパティを直接使用できます。
静的メソッド
静的メソッドは、クラスをインスタンス化せずに直接使用できます。
使用されるメソッドはクラス名::静的メソッド名です
関連コンテンツの詳細については、PHP 中国語 Web サイトをご覧ください: PHP ビデオ チュートリアル
以上がPHPにおけるselfとthisの違いと使い方を詳しく紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。