![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
wiec napisalem sobie taki maly szybki kodzik:
i druga wersja
"Test" wygląda tak:
A teraz pytanie. Na czym polega wstawianie słówka "static" przed nazwy metod skoro tak czy tak działa. Pewnie to jest za prosty przykład aby odczuć różnicę ale chce ją poznać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dziękuje. |
|
|
![]()
Post
#2
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
wg mnie php nie jest restrykcyjny, np w javie takie cos by nie przeszło
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Static przed metodą polega na tym, że można ją wywoływać bez obiektu, tak jak w przykładzie.
A działa w obu przypadkach, ponieważ PHP4 pozwalał na użycie dowolnej metody w kontekście statycznym, jeżeli tylko nie operowała na $this. PHP5 musiało być kompabybilne wstecz, i stąd rezultat. Czyli tak naprawdę słowo static nigdy nie jest potrzebne przed metodą, ale i tak warto je stosować, chociaż tylko dla porządku i dokumentacji kodu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Poza tym, dzięki użyciu static przed nazwą metody, sprawdzanie, czy nigdzie nie zostało wykorzystane $this, wykonywane jest już na poziomie parsowania pliku.
Pozwala to na znacznie wcześniejsze wykrywanie błędów, które w innym przypadku mogą nas mocno zaskoczyć w najmniej odpowiednim momencie. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 0 Dołączył: 9.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Słowo kluczowe static zostało wprowadzone, aby można było definiować składniki na rzecz klasy, nie konkretnego obiektu. Zalet jest wiele, oszczedność pamięci (w przypadku php to akurat mniejsza zaleta), jako licznik wywołań... Jest to niejako składnik klasy i zarazem każdego jej obieku. Jako że jest składniekiem klasy, to można na nim operować używając metody, która ma prawo operować. Jeżeli jednak mamy składnik statyczny, to zapewne stworzyliśmy go w pewnym celu: aby był dostępny nawet wtedy, gdy nie ma jeszcze żadnego obiektu. I do tego potrzebne są statyczne metody. A użycie funkcji niestatycznej na rzecz klasy w ogóle mi się nie podoba.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Aha dziękuje za odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) To rozjaśniło mi stan rzeczy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ide dalej "poznawac" zalety php5 ;] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:06 |