PHP statik değiştirici kullanmak için zaman

6 Cevap php

Bazı kod değerlendirmeleri yapıyor son zamanlarda ben onlara statik yöntemler önemli sayıda sınıfları bir dizi geldi ... ve ben neden kavramak gibi olamaz? Dolayısıyla benim soru:

PHP statik yöntemlerle ilgili en iyi uygulamalar nelerdir?

Kimse onları kullanmak isterim ve ne zaman kimse onları kullanmak gerekir ne zaman?

Zamanı statik yöntemleri nasıl işleyeceğini belirli fark nelerdir? Onlar performansı veya hafıza izi etkiler?

6 Cevap

Bazı kod değerlendirmeleri yapıyor son zamanlarda ben onlara statik yöntemler önemli sayıda sınıfları bir dizi geldi ... ve ben kavramak gibi olamaz neden

PHP 5.3 öncesi ad yoktu, bu yüzden bazı sınıfta aitti sürece tüm işlev / değişkenleri küresel alanda olacaktır. Statik üyeleri olarak bir sınıfa koyarak ad olmaması için geçici bir çözüm olduğunu (ve "önemli" sayıda onları gördüm muhtemelen neden)

Genellikle, tek tek nesneler çok kullanışlı olmayan fonksiyonlar için kullanılır, ancak (diğer yanıtlar dediği gibi) sınıf düzeyinde bazı kullanımı vardır

Statik yöntemler kullanılmaktadır

  • Verilen sınıf nesnelerin bütün toplanması (örneğin, singleton pattern) ile ilgili işlevler
  • şey ile ilgili, ama olmayan işlevleri nedeniyle OO bir sınıf altında koymak gerekir (ör. programı sınıflar)

Statik yöntem özel üyelere bir örneğini gerektirmez (ve bunun yerine bir dönüş olabilir) ve daha fazla veya daha az olan sınıf koymak dışında bir global fonksiyon gibi 'ad (ve dolayısıyla diğer fonksiyonları ile çarpışmaları önlemek) ve sınıf erişimi vardır' .

Eğer fonksiyonun bu özellikleri ilgileniyorsanız yüzden, ne zaman kullanabilirsiniz.

Iyi uygulama da test edilebilir ve bakımı öldürmek, çünkü onları mümkünse kullanmaktan kaçınmak olduğunu. İki büyük olduğunu ayrıntılı okur:

AÇIKLAMA: Bu konuda yanlış bir sürü gibi görünüyor. Bağımlılık enjeksiyon eksikliği gerçek bir sorun. Doğrudan statik yöntemleri çağırmadan sadece bu tuzağına düşen en yaygın yollarından biri olur.

Bunu statik yöntemleri kullanmak için sınıfının bir örneğini oluşturmak gerekmez.

Statik yöntemler kullanımı hakkında PHP özel bir şey yok.

Statik yöntemler sınıfına doğrudan çağrılabilir - bir örneği nesne için gerek yok.

Bu yüzden onların ana kullanım sınıfları işlevselliği ile ilgili yöntemler için, ancak diğer kod için bir kullanım için mevcut bir örneği gerekmez.

Yaygın bir örnek sınıf 'türündeki nesnelerin bir dizi sıralamak için uasort () fonksiyonu, diyelim ki, geçirilebilir özel karşılaştırma yöntem olacaktır.