nesnesi olarak mal beyanında?

3 Cevap php

Nasıl bir nesne olarak bir sınıf özelliği bildirmek?

Denedim:

 public $objectname = new $Object();

Ama işe yaramadı. Ayrıca, neden böyle yapmalıyım?

Sadece o nesne örneğini ve sadece kendi üyelerini kullanmak daha iyi değil midir?

3 Cevap

PHP manual on class properties (vurgu mayın) Gönderen:

Sınıf üyesi değişkenleri "özellikleri" denir. Ayrıca onları böyle "sıfatı" veya "alan" gibi başka terimler kullanarak ifade görebilirsiniz, ancak bu referans amacıyla biz "özellik" kullanacaktır. Bunlar normal değişken ilanı takip anahtar kelimeler halkın birini, protected veya özel, kullanılarak tanımlanır. Bu beyan may include an initialization, but this initialization must be a constant value - yani, bu derleme zamanında değerlendirilmesi gerekir ve değerlendirilmesi amacıyla çalışma zamanı bilgileri bağlı olmamalıdır.

Kurucuların içinde oluşturmak ya (composition)

class Foo
{
    protected $bar;
    public function __construct()
    {
        $this->bar = new Bar;   
    }
}

veya inject bunu yapıcı (aggregation)

class Foo
{
    protected $bar;
    public function __construct(Bar $bar)
    {
        $this->bar = $bar;   
    }
}

veya setter enjeksiyon kullanın.

class Foo
{
    protected $bar;
    public function setBar(Bar $bar)
    {
        $this->bar = $bar
    }
}

Sen favor aggregation over composition istiyorum.

PHP sınıf üyeleri açıkça yazarak desteklemiyor. Yani diyemeyiz:

public Object $objectname;

Sınıf Object var, ve siz bunun bir örneğini isterseniz, deneyin:

 public $objectname = new Object();

Sadece genel bir sınıf örneğini arıyorsanız yapabilirsiniz:

$objectname = new stdClass;

Sadece $ objectname beyan etmek zorunda ve yapıcı yeni stdClass ayarlayın diye, ben bir özelliğin bildiriminde yapabilirsiniz inanmıyorum.