Neden PHP 5.2 soyut sınıf statik yöntemler izin yok?
PHP sıkı uyarılar etkinleştirme sonra 5.2, ben aslında sıkı bir uyarı olmadan yazılmış bir projeden standartlarına sıkı uyarılar bir yük gördüm:
Sıkı Standartlar:Statik işlev::Program getSelectSQL()soyut olmamalıdırProgramda.sınıf.ınc
Söz konusu işlevi soyut üst sınıf bir Programa ait ve onun alt sınıfları, TVProgram gibi uygulanmaması gerektiği, çünkü soyut statik bildirildi.
Bu değişiklik için başvurular here buldum:
Soyut statik sınıf fonksiyonlar düştü. Bir hatadan ötürü, PHP 5.0.x ve 5.1.x sınıflarında soyut statik işlevleri sağladı. PHP 5.2.x, sadece arayüzleri onları alabilir.
Benim soru şudur: biri PHP soyut statik bir işlevi olmamalı neden net bir şekilde açıklayabilir mi?
CEVAP
statik yöntemler onları bildirilen sınıfa ait. Sınıf uzanan zaman, aynı adı statik bir yöntem oluşturabilir, ama aslında statik soyut bir yöntemi uygulamak.
Aynı statik yöntemleri ile herhangi bir sınıfın genişletilmesi için de geçerli. Sen bu sınıfı genişletir ve aynı imza statik bir yöntem oluşturmak, aslında üst sınıf statik bir yöntem geçersiz kılma değildir
EDİT(Sept. 16, 2009)
Bu güncelleştirme. Soyut görüyorum 5.3, PHP statik yeniden çalışmaya, iyi ya da kötü. (daha fazla bilgi için http://php.net/lsb)
DÜZELTME(philfreo tarafından)
abstract static
hala 5.3, LSB ilgili ama farklı PHP izin verilmez.
Neden't statik yöntemler Java'da ...
't neden C# Statik Yöntemler bir ...
Neden't İ C soyut statik yöntemle...
Neden Java statik olarak bir sınıf bil...
Neden't statik Java yöntemleri ge...