Nasıl genişletilmiş PHP bir sınıf statik bir çağrı code alabilir miyim?
İki sınıf var: Action
MyAction
. İkinci olarak ilan etti
class MyAction extends Action {/* some methods here */}
Tek ihtiyacım yöntemi Action
sınıf (sadece, çünkü orada olacak bir sürü miras sınıfları, ve istemiyorum uygulamak için bu yöntemi hepsine), hangi olacak dönüş code gelen bir statik arayın. Bahsettiğim şey burada:
Class Action {
function n(){/* something */}
}
Ve benim numaram:
MyAction::n(); // it should return "MyAction"
Ama üst sınıf her beyanı sadece üst sınıf erişebilir değerine sahip __CLASS__
değişken, “Eylem”.
Herhangi bir şekilde bunu yapmak için var mı?
CEVAP
__CLASS__
her zaman statik bir yöntem ile pek yardımcı değil bu yüzden içinde kullanılan sınıf adını döndürür. Eğer statik bir yöntem olmasa da sadece get_class($) kullanabilirsiniz. örneğin
class Action {
public function n(){
echo get_class($this);
}
}
class MyAction extends Action {
}
$foo=new MyAction;
$foo->n(); //displays 'MyAction'
Geç statik bağlama, PHP 5.3 mevcut
PHP 5.3 yayımlanan şimdi, zamanında statik bir yöntem çağrısı için hedef sınıf çözelim late static bindings kullanmak yerine tanımlandığında.
Süre bulunmuyor tanıtmak yeni bir büyü sürekli sen code olduğunuzu denilen, değil mi sağlayan yeni bir fonksiyon get_called_class() hangi söyleyebilirsiniz Adı Sınıf statik bir yöntem idi. İşte size bir örnek:
Class Action {
public static function n() {
return get_called_class();
}
}
class MyAction extends Action {
}
echo MyAction::n(); //displays MyAction
Nasıl bir Python sınıf içinde yöntemle...
Nasıl statik bir içerikten kaynak bir ...
Nasıl bir soyut temel sınıf uygulayan ...
Nasıl jQuery ile bir div mevcut sınıf ...
Nasıl ActionScript 3'te bir Sınıf nesn...