Kilka miesięcy temu przeczytałem o funkcji PHP, która jest wywoływana za każdym razem, gdy wywoływana jest metoda statyczna, podobnie do funkcji __construct
, która jest wywoływana, gdy instancja klasy jest instancjonowana. Jednak nie mogę znaleźć funkcji, która dba o tę funkcjonalność w PHP. Czy istnieje taka funkcja?Konstruktor alternatywny dla metod statycznych w PHP
Odpowiedz
Możesz grać z __callStatic() i zrobić coś takiego:
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);
przy użyciu tego kodu żadnej metody, która jest poprzedzona „_” uruchomi konstruktora statycznego „” pierwszy. To tylko podstawowy przykład, ale można użyć __callStatic
, ale działa to lepiej dla ciebie.
Powodzenia!
Czy metoda __callStatic() może odnosić się do? Właśnie znalazłem to w podręczniku PHP:
http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
Być może nie, chociaż, ponieważ wydaje się być magiczny sposób do obsługi połączeń niezdefiniowana metoda statyczna ...
Obawiam się, że nie jest to metoda, której szukam. Dzięki za odpowiedź. –
__callStatic() jest wywoływana za każdym razem, gdy wywołujesz nieistniejącą statyczną metodę klasy.
Natknąłem się na tę metodę w podręczniku PHP jakiś czas temu, ale, jak wspomniałeś, jest ona wywoływana tylko wtedy, gdy wywoływana jest nieistniejąca metoda statyczna. –
- 1. Wady metod statycznych w PHP
- 2. doładowanie dla metod statycznych - PowerMock
- 3. C# Alternatywa dla wirtualnych metod statycznych i podklatek statycznych
- 4. Czy konstruktor statyczny może zmniejszyć wydajność dostępu do metod statycznych?
- 5. Dziedziczenie metod statycznych w ES6
- 6. Rozszerzanie klas statycznych PHP
- 7. PHP: Kiedy używać funkcji i kiedy używać metod statycznych?
- 8. Pisanie jQuery statycznych metod util
- 9. Korzystanie z metod statycznych lub bez metod statycznych w klasie Dao?
- 10. jednoczesnego dostępu do metod statycznych
- 11. Alternatywny do PHP exec() funkcji
- 12. xCode/deklarowanie metod statycznych w klasie
- 13. definiowania kilka metod statycznych w C++
- 14. Wskaźniki do metod statycznych w Pythonie
- 15. Function-scope konstruktor statycznych obiektu zgłasza wyjątek
- 16. Jaka jest poprawna alternatywa dla dziedziczenia metod statycznych?
- 17. C# classes - Dlaczego tak wiele metod statycznych?
- 18. PHPUnit - Użyj $ this lub self dla metod statycznych?
- 19. Ujawnianie metod statycznych za pomocą klas proxy
- 20. Wywołanie metod statycznych z Spring Security Expressions?
- 21. Czy salesforce Apex obsługuje dziedziczenie metod statycznych?
- 22. Walidacja @ScriptAssert z dostępem do metod statycznych
- 23. php konstruktor dziedziczenie
- 24. PHP konstruktor z parametrem
- 25. Guice - Wstrzykiwanie wtyczki do klasy za pomocą statycznych metod pomocniczych
- 26. Magiczny __get getter dla właściwości statycznych w PHP
- 27. Czy korzystanie ze statycznych metod i właściwości w PHP wymaga mniej pamięci?
- 28. Ograniczenia odwołań metod statycznych w języku Java 8
- 29. Przechwytywanie wywołań metod w PHP
- 30. Konstruktor zapytań MySQL klasa PHP
Nie tego oczekiwałem, ale uważam, że jest najbliższy temu, czego szukam. Dzięki, Adi. –
Nie ma problemu, mam nadzieję, że pomogłem. –