2010-11-08 13 views
10

self::staticFunctionName() ve parent::staticFunctionName()'un ne olduğunu ve bunların birbirinden nasıl farklı olduğunu ve $this->functionName'dan nasıl olduğunu biliyorum.static :: staticFunctionName()

static::staticFunctionName() nedir?

+0

* (related) * [Bu sembol PHP'de ne anlama geliyor] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

cevap

15

Geç statik statik bağlamaları çağırmak için PHP 5.3 + 'da kullanılan anahtar sözcüktür.
kılavuzda hepsini oku: Dinamik self::foo() gibi http://php.net/manual/en/language.oop5.late-static-bindings.php Özetle


, static::foo() eser. hepsi ama beri, biraz kafa karıştırıcı bu davranış için anahtar sözcük olarak

class A { 
    static function foo() { 
     // This is overridden in the child class. 
    } 
    static function bar() { 
     static::foo(); 
    } 
} 

class B extends A { 
    static function foo() { 
     // This will be executed. 
     // static::foo() is bound late. 
    } 
} 

B::bar(); 

static:

class A { 
    static function foo() { 
     // This will be executed. 
    } 
    static function bar() { 
     self::foo(); 
    } 
} 

class B extends A { 
    static function foo() { 
     // This will not be executed. 
     // The above self::foo() refers to A::foo(). 
    } 
} 

B::bar(); 

static

bu sorunu çözer. :)

+1

Siz Ebeveyn sınıfındaysanız, statik :: functionName() kullanın, ancak çocuğun statik işlevini çağırmak istiyorsunuz. Bu şekilde alt sınıfların statik davranışı geçersiz kılmasına izin verebilirsiniz. –

İlgili konular