Czy brakuje mi czegoś lub naprawdę nie ma wsparcia dla ogólnego rodzaju podpowiedzi typu w PHP 5.x?Podpowiedź typu PHP: obsługiwana tablica, obiekt NIE?
Uważam, że to naprawdę dziwne, że podpowiedzi tablic są obsługiwane, gdy podpowiadanie obiektów nie jest, przynajmniej nie po wyjęciu z pudełka.
Chciałbym mieć coś takiego:
function foo(object $o)
Podobnie jak mamy:
function foo(array $o)
Przykład możliwego użycia: Metody klasy zbierania przedmiotów.
Obejście: za pomocą interfejsu „obiekt” realizowany przez wszystkich klasach lub przedłużenia wszystkich klas z ogólnej klasy „obiekt” i pisząc coś takiego:
function foo(Object $o)
Dobrze, że po prostu nie jest słodkie.
Korzystanie stdClass
jako wskazówkę typu nie działa:
Catchable fatal error: Argument 1 passed to c::add() must be an instance of stdClass, instance of b given
Nie należy stosować typów betonu do podpowiedzi typu. Użyj interfejsów lub przeczytaj o pisaniu z kaczką. –
Jeśli mam chodzić nie ścieżkami konkretnych typów wolałbym użyć is_object(). Ale nie o to chodzi w tej dyskusji. –
Spójrz, PHP to bardzo niespójny język, w którym obiekty nie dziedziczą z pojedynczej klasy, tak jak w Javie. Fakt, że nie ma typowego wzmianki o obiektach ogólnych, jest rzeczywiście niedopatrzeniem, ale myślę, że musicie przejść ten punkt i przygotować się na inne dziwne rzeczy. –