Php yerine bağımsız bir yöntemi bir sınıf statik bir yöntem kullanmak için bir neden var mı?

2 Cevap php

Biz burada bu tartışmayı yapıyoruz. Hangi neden daha iyi ve?

1) sadece bir fonksiyonu içeren bir php dosyası ...

function bar(){}

Böyle denir

bar();

2) statik bir yöntem ile bir sınıf içeren bir php.

class foo{
static function bar(){}
}

Böyle denir foo::bar();

Birini veya başka yapmak için herhangi bir performans nedenler vardır? Kod organizasyonu amaçlı statik yöntem bana daha iyi görünüyor ama sınıflar bildirmek için hiçbir neden görmüyorum burada birkaç programcılar vardır.

2 Cevap

Ben ana avantajı yeniden-yeteneği ve modülerlik yönü olduğunu söylemek istiyorum - ne sen A ve B oluşturduk fonksiyonlarının iki farklı "kütüphaneler" varsa ve her ikisi de bar() fonksiyonlar var olur? Statik yöntemler olarak, A::bar() arayabilir ve B::bar(), ancak bağımsız fonksiyonları adı çakışmalarını olurdu.

Tabii, bu olası isimler çelişmesi yapmak için tüm bağımsız işlev isimleri garip önekleri koyarak bu sorunu alabilirsiniz, ama bunu yapmak için gidiyoruz eğer, sadece bir sınıfta sarın ve bunları kullanmak için çok basittir Statik olarak işlev görür.

PHP 5.3 + olarak da bu amaca eğer bunu arzu gerçekleştirmek için ad kullanabilirsiniz.

Kuruluş amacıyla namespaces 5.3 + php eklenmiştir.

Statik yöntemler bu sınıfın bir nesne korumalı / özel üyeler erişebilir. örneğin

class Foo {
  protected function xyz() {
    return 'abc';
  }

  public static function bar(Foo $f) {
    echo $f->xyz();
  }
}

$f = new Foo;
Foo::bar($f);

Ve aynı sınıfın farklı yöntemler arasındaki statik özellikleri paylaşır ancak "dışarıdan" onları korumak için aynı görünürlük seçeneklerini kullanabilirsiniz. Örneğin

class Foo {
  protected static $abc;

  public static function set($x) {
    self::$abc = $x*2;
  }

  public static function get() {
    return self::$abc;
  }

}
Foo::set(1);
echo Foo::get();