PHP OO hakkında sorular devam etti

2 Cevap php

Dün here PHP OO ve sınıfları hakkında bir kaç soru vardı ama ben bir çift yeni sorularım var.

1a)
In the example snippet below you will see the 3 variables set at the top of the class and then used in a method in the class. Notice how the 3 variable declared in the beginning are not set to anything, so is it required to set/list all variables a class will use at the top like that?

1b) VEYA onlar sadece onları / özel / kamu korunacak ayarlamak için üst denir?

1c) her zaman bir değişken böyle, hep vars hala başında bunları ayarlamak gerekir, kamu, diyelim ayarlamak için gerekli midir?

<?PHP
class widget{
    private $name;
    public $price;
    private $id;

    public function __construct($name, $price){
    	$this->name = $name;
    	$this->price = floatval($price);
    	$this->id = uniqid();
    }
}
?>

2 Cevap

Sadece sınıfa kapsamlı ama o nesnenin tüm yöntemleri kullanılabilir konum, ve her yeni bir dizi her örneği için oluşturulmuş olacak - bir sınıf bildirimi içinde değil bir yöntem içinde bildirilen değişkenler o sınıfın "üye değişkenleri" vardır Nesnenin.

$a = new widget("first", 0.1);
$b = new widget("second", 0.2);

echo $a->price; // will echo 0.1
echo $b->price; // will echo 0.2
echo $price; // will not echo anything unless you set $name to something elsewhere

echo $name; // will not echo anything unless you set $name to something elsewhere
echo $a->name; // will give you an error since 'name' is private to the class

Eğer değişkenin kapsamını ayarlamak isterseniz, size yukarıda yaptığımız gibi sınıf bildiriminde beyan etmek gerekir. Sadece değişken bir kamu kapsama sahip olmak istiyorsanız, sadece kullanarak on-the-fly bir yöntem içinde bunu ayarlayabilirsiniz:

$this->variable_name = "value";

Bu şekilde tanımlanan bir değişken herhangi bir alt-sınıflar (bu sınıfı genişletir sınıfları) yöntemlerden herhangi de sınıf içinde herhangi bir yöntemle mevcut olacak ve.