ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのこの self static の使用法の違い
この記事では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
と呼ばれます。 <?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(); // 小明
上記の例からわかるように、self はクラス A で書かれており、呼び出されるときはクラス A を指します。 static もクラス A で書かれていますが、クラス B のオブジェクトで呼び出された場合、クラス B のサブクラスクラス A はクラス A を指します。クラス B を使用する場合、static はそれが指すクラスを決定します。これが
です。 後の静的バインディング
概要
static は、通常、現在のクラスの静的変数および静的メソッドにアクセスするために使用されるクラスを指しますが、
静的呼び出しに限定されません。実行時にどのクラスを指すかが決まります。
以上がPHP でのこの self static の使用法の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。