Fonksiyonu saklamak için PHP sınıflarını kullanma

2 Cevap

Benim PHP kodu organizasyonu bazı tavsiyelerde gerekir.

Ben farklı işlevleri saklayabilirsiniz sınıflar gerekiyor ve benim proje farklı bölgelerinde bu sınıflara erişimi gerekir. Bu sınıfların bir nesne her zaman yapmak çok ne yazık ki, bu yüzden bir iki yolu bunu çözmek zorunda buldum.

İlk gibi statik yöntemler, kullanmak için

class car {
public static $wheels_count = 4;

public static function change_wheels_count($new_count) {
    car::$wheels_count = $new_count;
} }

İkinci singleton deseni kullanmak için:

class Example {
// Hold an instance of the class
private static $instance;

// The singleton method
public static function singleton() 
{
    if (!isset(self::$instance)) {
        $c = __CLASS__;
        self::$instance = new $c;
    }

    return self::$instance;
}  }

Ama tekil ilgili makalenin yazarı benim kodunda çok fazla singletons varsa bunu yeniden gerektiğini söyledi. Ama böyle sınıfların bir çok ihtiyacımız var.

Herkes her şekilde artılarını ve eksilerini açıklayabilir misiniz? Çoğunlukla Hangi kullanılır? Daha güzel yolları var mı?

2 Cevap

Eğer fonksiyonları saklamak için bazı tür bir sınıf kullanmak gerektiğini söylüyorlar, ben normalde düz fonksiyonlarını kullanarak iyi olurdu küstah değilim ama küresel kapsamını kirletmez istemiyorum. Bu sorun, PHP tüm zaman içine çalışacaktır.

PHP 5.3 ile çalışmaktan şanslı iseniz genel kapsam dışında fonksiyonlarını çekmek için ad kullanabilirsiniz. Etkili, ad alanları normalde denemek ve teklik sağlamak için fonksiyonları üzerinde olurdu otomatik tamamlama öneklerine uygun bir yol olarak hizmet vermektedir. Çünkü bu ilkel uygulama, ad alanları için kullanılabilir hiçbir erişim kontrolü yoktur. Bir arabirim tasarımı istiyorsanız, tüm fonksiyonları küresel erişilebilir gibi, sen şans vardır.

Bu durumda, bir statik sınıfı kullanır. Hayır, kesinlikle en güzel çözüm değil ama tam anlamıyla iyi PHP sunabilir. Statik bir sınıf ile etkili hem teklik ve kullanım erişim kontrolü için fonksiyonları önek.

Singletons farklı bir sorunu çözmek bir nesne yönelimli bir kavram vardır. Özgün tasarım hiçbir nesne içeriyorsa, şimdi onları tanıtmak değil.

O dedi, denilen bir işlevi var change_wheels_count(). Bu fonksiyon, bir devlet kavramı vardır ve devlet gerektiğinde bir nesne gerekir. Kod sadece hızlı bir örnek ya da fiili durum olsaydı ben bilmiyorum. Bu gerçek durum olsaydı, ben statik bir sınıf veya bir singleton ne gerekir söyleyebilirim.