この記事ではPHPにおけるこのself staticとの違いを中心に紹介していますが、編集者がとても良いと思ったので、参考として共有させていただきます。編集者をフォローして見に来てみましょう
最近、私はソフトウェアエンジニアリングコースの設計を行っていましたが、Laravelのソースコードを掘り起こして再度検索したところ、問題が発生したことがわかりました。 self static について深く理解しているため、問題が発生したので、同じ間違いを繰り返さないように書き留めてください。
これは、現在のオブジェクトを指し、現在のオブジェクトの非静的変数と非静的メソッドにアクセスするために使用されます。
<?php class Person { public $name; public function getName() { echo $this->name; } } $p = new Person(); $p2 = new Person(); $p->name = "小红"; $p2->name = "小明"; $p->getName(); // 小红 $p2->getName(); // 小明
。上記の例では、2 つのオブジェクトが new であり、それぞれのオブジェクトの name 属性を設定します。これは、現在のオブジェクトの name 属性にアクセスするために使用されます。そのため、name の値がそれぞれ出力されます。したがって、これは現在のオブジェクトを指し、他のオブジェクトやクラスを指しません。
self は、クラス自体を指し、インスタンス化されたオブジェクトを指すのではなく、通常、クラス内の静的変数と静的メソッドにアクセスするために使用されます。 2 つのオブジェクトが追加および変更されます。一方のオブジェクトの name 属性ともう一方のオブジェクトの name 属性値も変更されます。したがって、self は現在のクラスを指し、すべてのオブジェクトが同じ値を共有します。
static
と呼ばれます。 です。 後の静的バインディング 概要 static は、通常、現在のクラスの静的変数および静的メソッドにアクセスするために使用されるクラスを指しますが、 以上がPHP でのこの self static の使用法の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。<?php
class Person {
public static $name = "小红";
public static function getName() {
echo self::$name;
}
}
$p = new Person();
$p2 = new Person();
$p::getName(); // 小红
$p2::getName(); // 小红
$p::$name = "小明";
$p::getName(); // 小明
$p2::getName(); // 小明
this は現在のオブジェクトを指し、現在のオブジェクトの非静的変数と非静的メソッドにアクセスするために使用されます。
self はクラスを指し、通常は静的変数と静的メソッドにアクセスするために使用されます。実行前に、現在のクラスのどのクラスを指すかが決定されています。
静的呼び出しに限定されません。実行時にどのクラスを指すかが決まります。