Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%)
|
Witam serdecznie,
W ostatnim czasie czytam książkę o PHP aby poukładać sobie odpowiednio informacji, aż tu nagle okazało się że są tu jeszcze inferfejsy ... Najgorsze jednak jest to, że nie bardzo to rozumiem. Tzn wiem, ze interface przechowuje jedynie funkcje metody ( bez żadnych instrukcji ) i teraz chciałem zapytać w jakim celu są stosowane czy dobrze rozumiem ,że deklarując klasę która implementuje interfejs musi posiadać metody które zawiera interface? Jeżeli tak, to czy klasy dziedziczące po klasie implementujacej dany interfejs musi posiadać również te metody czy nie? Ten post edytował Micchaleq 21.11.2011, 09:36:23 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%)
|
Interfejs to nic innego jak wytyczne do utworzenia klasy zgodnej z jakimś wzorcem, bądź mogącej zostać użytej w jakimś kontekście.
Tak jak pisałeś interfejs to deklaracja metod, które MUSZĄ być zaimplementowane w klasie. Przykładem może być na przykład coś takiego:
Aby policzyć teraz ile elementów ma niby_tablica::$tablica należało by napisać tak:
Ale łatwiej było by napisać:
Tyle, że to nie zwróci nam tak naprawdę wielkości zmiennej $tablica. Możemy zaimplementować Interfejs Countable, który ma raptem jedną metodę count()
Teraz wyświetli to autentyczną liczbę elementów tablicy $tablica. Ale... czy zadziałało by to bez "implements Countable"? Po prostu samo dodanie metody count() czy da taki sam efekt? - Odpowiedź jest prosta - NIE - dlaczego? Bo php'owa funkcja count sprawdza czy ma do czynienia z obiektem i jeśli tak to sprawdza czy implementuje on interfejs Countable i jeśli tak to używa jego funkcji count() - bo ma pewność, że ów obiekt taką posiada - wymaga to implementacja interfejsu. Interfejsu służą zatem do deklarowania ogólnych list metod wymaganych przez jakiś obiekt, ale jak widać nie tylko (IMG:style_emoticons/default/tongue.gif) jeżeli interesujesz się tym dalej - zapoznaj się również z klasą abstrakcyjną (IMG:style_emoticons/default/wink.gif) Ten post edytował Sephirus 21.11.2011, 09:48:44 |
|
|
|
Micchaleq [PHP] Interface - pytanie 21.11.2011, 09:32:32
Micchaleq Oki to mniej więcej już to rozumiem,
teraz pozost... 21.11.2011, 09:49:00
Daiquiri Klasy abstrakcyjne zawierają po prostu definicje m... 21.11.2011, 10:01:59
Sephirus Na to pytanie można odpowiedzieć sobie samemu Jeż... 21.11.2011, 10:02:31
Micchaleq No to ostatnie pytanie.
otóż gdzieś wyczytałem, ż... 21.11.2011, 10:10:01
nospor CytatCzy to prawda?Przecież może napisać sobie pro... 21.11.2011, 10:12:07
Micchaleq Cytat(nospor @ 21.11.2011, 10:12:07 )... 21.11.2011, 10:25:46
nospor Skoro ci nie działałalo, znaczy że nie można
ps... 21.11.2011, 10:33:37
Micchaleq [PHP] pobierz, plaintext <?phpinterface pinter... 21.11.2011, 10:43:03
nospor Prawidłowy kod potwierdzający twoje pytanie - nie ... 21.11.2011, 10:50:19 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 17:15 |