PHPに変数$this
が常に表示され、それが何に使用されているのかわかりません。個人的に使用したことはありません。検索エンジンは$
を無視し、「this」という単語を検索することになります。
PHPで変数$ thisがどのように機能するかを教えてもらえますか?
現在のオブジェクトへの参照であり、オブジェクト指向コードで最も一般的に使用されています。
例:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
これにより、作成されたオブジェクトのプロパティとして「Jack」文字列が保存されます。
Phpの$this
変数について知る最良の方法は、PHPの内容を尋ねることです。私たちに尋ねないで、コンパイラに尋ねてください:
print gettype($this); //object
print get_object_vars($this); //Array
print is_array($this); //false
print is_object($this); //true
print_r($this); //dump of the objects inside it
print count($this); //true
print get_class($this); //YourProject\YourFile\YourClass
print isset($this); //true
print get_parent_class($this); //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
$ thisについての別の正確な説明とにかく、私はその古い質問を知っています。 $ thisは、主にクラスのプロパティを参照するために使用されます。
例:
Class A
{
public $myname; //this is a member variable of this class
function callme() {
$myname = 'function variable';
$this->myname = 'Member variable';
echo $myname; //prints function variable
echo $this->myname; //prints member variable
}
}
出力:
function variable
member variable
他の多くのオブジェクト指向言語と同じように、クラスのインスタンスを内部から参照する方法です。
PHPドキュメント から:
疑似変数$ thisは、オブジェクトコンテキスト内からメソッドが呼び出されたときに使用できます。 $ thisは、呼び出し元オブジェクト(通常、メソッドが属するオブジェクトですが、メソッドがセカンダリオブジェクトのコンテキストから静的に呼び出される場合は別のオブジェクト)への参照です。
$ thisを使用せず、次のコードスニペットで同じ名前のインスタンス変数とコンストラクター引数を使用しようとするとどうなるかを見てみましょう。
<?php
class Student {
public $name;
function __construct( $name ) {
$name = $name;
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
何もエコーしません
<?php
class Student {
public $name;
function __construct( $name ) {
$this->name = $name; // Using 'this' to access the student's name
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
これは「Tom」をエコーします
$this
は 呼び出し元オブジェクトへの参照 (通常はメソッドが属するオブジェクトですが、メソッドがセカンダリオブジェクトのコンテキストから静的に呼び出される場合は別のオブジェクトである可能性があります)。
クラスを作成すると、(多くの場合)インスタンス変数とメソッド(別名、関数)があります。 $ thisはこれらのインスタンス変数にアクセスし、関数がこれらの変数を受け取り、必要な処理を実行できるようにします。
mederの例の別のバージョン:
class Person {
protected $name; //can't be accessed from outside the class
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
// this line creates an instance of the class Person setting "Jack" as $name.
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack");
echo $jack->getName();
Output:
Jack
$ thisは特別な変数であり、同じオブジェクトを参照します。自体。
実際に現在のクラスのインスタンスを参照します
上記のステートメントをクリアする例を次に示します
<?php
class Books {
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
mederのように、現在のクラスのインスタンスを参照します。
PHP Docs を参照してください。最初の例で説明します。