Nesnenin kalıtsal özelliklerini unset nasıl?

2 Cevap php

Ben bir nesne var

    (
        [id] => 1
        [parent_id] => 0
        [result:Database:private] => 
        [db:Database:private] => mysqli Object
            (
                [affected_rows] => 0
                ...
            )

    )

Açıkçası, Object 'db' ve ana veritabanı sınıfının 'sonuç' özelliklerini devralmıştır.

unset ($ object-> sonuç) ne unset ($ object-> sonuç: Database) ne unset ($ object-> Sonuç: Veritabanı: Özel) çalışır.

Onlar (nesne özellikleri çıkış olmak üzereyken yani) artık gerekli olduğunda nasıl bu özellikleri unset olabilir?

O (veritabanı bağlantıları kullanan diğer tüm sınıfları ile bir veritabanı sınıfını genişleten) diğer sınıfların kalıtsal bir özelliği olarak bir veritabanı nesnesi için genellikle iyi bir fikir mi?

2 Cevap

Try $object->result = null

O (veritabanı bağlantıları kullanan diğer tüm sınıfları ile bir veritabanı sınıfını genişleten) diğer sınıfların kalıtsal bir özelliği olarak bir veritabanı nesnesi için genellikle iyi bir fikir mi?

Hayır senin sınıf bir sorumluluğu olması en iyisidir. Sorumluluk veritabanından veri okumak ve yazmak için sınıfların bir sınıf veya kümesi veritabanı bağlantıları tutun. Kalıtımsal bile - diğer etki alanı nesneleri SQL ve veritabanı kodu ile kalabalık olmadan kendi sorumlulukları ele gerekir.

Ayrıca kavramı üzerinde okumak isteyebilirsiniz "miras üzerinden iyilik kompozisyon."

Eğer sadece tek bir nesne () unset kullanıyorsanız bir yere hafızasında var ve ne sizin nesne var sadece bir referans olduğunu, çünkü nesneyi unsetting değildir. Aynı referans bu DB nesne tutan tüm diğer nesneler tarafından kullanılır. Yapabileceğiniz tek şey, eşit NULL'A bu başvuru ayarlamak için, ama DB hala diğer nesneler tarafından orada kullanılan olduğundan herhangi bir bellek boşaltarak değildir.

Genellikle herhangi bir performans artışı almazsınız gibi DB nesneyi unsetting dert olmaz. Çalışması bittiğinde PHP otomatik çöp nesnelerini toplayacaktır.

Evet, bu bir statik DB nesne var veya veritabanı kullanarak kendi derslerinde devralmak için iyi bir fikirdir.