Domyślam się, że to pytanie jest nastawione bardziej na maniaków języka. Mam następujące klasy:Wywołanie publicznej, statycznej funkcji w abstrakcyjnej klasie
<?php
abstract class ScopeFactory
{
public static function doStuff()
{
}
}
Teraz jestem w stanie wywołać tę funkcję tak:
ScopeFactory::doStuff()
I to działa szczęśliwie. Zawsze kodowałem pod wrażeniem, że klasy abstract
nie mogą być używane bezpośrednio - i muszą być zaimplementowane przez konkretną klasę, aby można było wywoływać.
Moje wrażenia z numeru static
polegają na tym, że nie wymaga on wywołania instancji .
Czy ktoś mógłby mi wyjaśnić, dlaczego jest to zgodne z prawem, a jeśli tak, to powinno być? Jestem ciekawy szczegółów.
Tak statyczna metoda nie jest przechowywana w tym samym miejscu co instancja klasy (instancja! = Deklaracja). To da ci wskazówki: http://stackoverflow.com/questions/17407203/can-we-use-static-method-in-an-abstract-class –