$ thisを使用して、現在のオブジェクトを参照します。現在のクラスを参照するには、selfを使用します。つまり、非静的メンバーには$ this-> memberを使用し、静的メンバーにはself ::$memberを使用します。
class Demo
{
private static $name;
private $age;
public function __construct($name, $age)
{
self::$name = $name;
$this->age=$age;
}
public function show()
{
echo "Name : ", self::$name, "<br/>"; //Accessing by self
echo "Name : ", Demo::$name, "<br/>"; //Accessing by class name
echo "Age : ", $this->age, "<br/>";
}
}
$demo = new Demo("Tiny", 13);
$demo->show();
これにより、次の出力が生成されます。
Name : Tiny
Name : Tiny
Age : 13
前のスニペットself::$name
との違いは何ですか?Demo::$name
class Person1
{
private $name;
private $address;
public function __construct($name,$address)
{
$this->name = $name;
$this->address = $address;
}
public function show()
{
echo "Name : ", $this->name, "<br/>";
echo "Address : ", $this->address, "<br/>"; //Accessing by this
}
}
$p1=new Person1("xxx", "yyy");
$p1->show();
class Person2
{
private $name;
private $address;
public function __construct($name,$address)
{
self::$name = $name;
self::$address = $address;
}
public function show()
{
echo "Name : ", self::$name, "<br/>";
echo "Address : ", self::$address, "<br/>"; //Accessing by self
}
}
$p2=new Person1("xxx", "yyy");
$p2->show();
2つのクラスの前に、次のように同じ出力を生成しますPerson1
。Person2
Name : xxx
Address : yyy
Preson1
(クラス、show()
メソッドのように)の違いは何ですか
$this->name;
$this->address;
および(Preson2
クラスの場合と同様に、show()
メソッド)
self::$name;
self::$address;
この文脈では?