Birkaç ay önce, bir sınıf örneği başlatıldığında çağrılan __construct
işlevine benzer bir statik yöntem çağrıldığında her zaman çağrılan bir PHP işlevi hakkında okudum. Ancak, PHP'de bu işlevin hangi işlevi yerine getirdiğini bulamıyorum. Böyle bir işlev var mı?PHP'de statik yöntemler için kurucu alternatifi
cevap
Böyle bir şey __callStatic() ile oynamak ve bunu yapabilirsiniz:
class testObj {
public function __construct() {
}
public static function __callStatic($name, $arguments) {
$name = substr($name, 1);
if(method_exists("testObj", $name)) {
echo "Calling static method '$name'<br/>";
/**
* You can write here any code you want to be run
* before a static method is called
*/
call_user_func_array(array("testObj", $name), $arguments);
}
}
static public function test($n) {
echo "n * n = " . ($n * $n);
}
}
/**
* This will go through the static 'constructor' and then call the method
*/
testObj::_test(20);
/**
* This will go directly to the method
*/
testObj::test(20);
Bu kodu ilk '_' çalışacaktır statik 'yapıcı' öncesinde herhangi bir yöntem kullanma. Bu sadece temel bir örnektir, ancak __callStatic
'u kullanabilirsiniz, ancak sizin için daha iyi çalışır.
İyi şanslar!
__callStatic(), atıfta bulunduğunuz yöntem olabilir mi? o ... tanımsız statik yöntemini çağırır işlemek için sihirli bir yöntem olarak görünmektedir beri http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
Belkide,
Korkarım ki bu aradığım yöntem değil. Cevabın için teşekkürler. –
__callStatic() denir değil: Sadece PHP Manual bunu buldum Her zaman bir sınıfın varolan statik yöntemini çağırmazsınız.
Bir süre önce PHP el kitabında bu yönteme rastladım, ama bahsettiğiniz gibi, sadece varolan statik bir yöntem çağrıldığında çağrılır. –
- 1. doAnswer statik yöntemler için - PowerMock
- 2. C# Statik Yöntemler
- 3. R6 sınıflarında statik yöntemler
- 4. Polimorfizm ve Statik Yöntemler
- 5. Python Statik yöntemler, neden?
- 6. Alay Statik Yöntemler
- 7. F # Özel Statik Yöntemler
- 8. Neden tüm özel yöntemler için statik yöntemler kullanmıyorsunuz?
- 9. Functons, statik yöntemler veya normal yöntemler
- 10. F # Sınıf İçi Statik Yöntemler
- 11. İlkbaharda statik yöntemler nasıl engellenir?
- 12. C# de yardımcı yöntemler: Statik mi yoksa statik olmayan mı?
- 13. (yöntemler statik unutmayın) Ben sınıfları şu var kalıtsal statik yöntemle
- 14. VBO'lar oluştururken neden statik yöntemler bellek kullanıyor?
- 15. C# sanal (veya soyut) statik yöntemler
- 16. Uzantı yöntemleri, statik sınıflardaki yöntemler ve Roslyn
- 17. Güncelleme: Zend Framework'de statik içeriği yönetmek için en iyi yöntemler?
- 18. Groovy meta-programming - Object.metaClass için statik yöntemler eklemek
- 19. PHPUnit - Statik yöntemler için $ this or self kullanın?
- 20. Windows için getSystemLoadAverage() alternatifi?
- 21. android webapps için WebView alternatifi
- 22. Android alternatifi?
- 23. Mathworks Polyspace'e Açık Kaynak alternatifi?
- 24. Java Generics - Tip bağımsız değişkenlerle statik yöntemler nasıl yazılır?
- 25. Clojure’ın Gen sınıfı ile nasıl statik yöntemler üretilir?
- 26. Enkelerde Yöntemler
- 27. Java'da statik yöntemler her zaman derleme zamanında çözülüyor mu?
- 28. Düğümde "statik yöntemler" ile Nesne, İşlev, Tarih vb. Ekleyebilir miyim?
- 29. Yöntemler
- 30. 'Durum' için veri kurucu nerede?
Bu benim umduğum gibi değil, ama ben aradığımı en yakın olduğunu düşünüyorum. Sağol Adi. –
Sorun değil, umarım yardımcı oldum. –