Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Raz na zawsze z właściwościami/metodami statycznymi
Forum PHP.pl > Forum > PHP > Object-oriented programming
Fred1485
Witajcie,

W tym miejscu chciałbym się poradzić, aby raz na zawsze rozprawić się z problemem, czy i kiedy stosować właściwości czy też metody statyczne.

Z definicji jasno wynika, że odnoszą się one do klasy a nie instancji. Jest to zrozumiałe, ale w praktyce co uwarunkowuje mnie do tego czy ich użyć czy nie?
Zaczynam pisać jakąś klasę i zastanawiam się jakie metody czy właściwości musi posiadać, ok już wszystko wiem, ale teraz problem jest które mają być statyczne a które nie.
Czy to w większości zależy od programisty, jak mu się "umyśli" czy jest jakiś większy tego powód. Może ktoś powie że nie trzeba tworzyć instancji klasy, ale czy ta jedna linijka coś zmienia w praktyce?
Przeszukałem trochę internetu i różne głupoty i nie głupoty piszą. Towarzysze pomożecie dając jakieś konkretne powody?
Crozin
Jest bardzo mało sytuacji, gdzie faktycznie uzasadnionym jest użycie metod/właściwości statycznych. Można by do nich zaliczyć:
- metody z klas-pomocniczych ogólnego użytku wykonujące relatywnie proste operacje wyłącznie na podstawie danych wejściowych podanych w argumentach,
- metody tworzące instancje konkretnych obiektów - przy czym tutaj często warto utworzyć sobie osobny obiekt klasy-fabryki,
- czasami pewne stałe/dane statyczne mogą być wyrażone w formie metod/właściwości statycznych - przy czym tutaj jest jedno wielkie "to zależy",
- pewnie kilka innych sensownych zastosowań by się znalazło.

1. Generalnie o ile nie masz dobrego uzasadnienia dla wykorzystania metody/właściwości statycznej nie powinieneś tego robić.
2. Statyczne elementy tworzą twarde powiązania pomiędzy różnymi częściami kodu - a to prowadzi to utrudnień przy przenoszeniu, testowaniu, rozszerzaniu kodu itp.
3. Elementy statyczne zawsze współdzielą ten sam stan w PHP, a to często prowadzi jedynie do ograniczeń.
Pyton_000
Im mniej static tym lepiej.
Jeśli już to dodam od siebie np. Klasa z konfiguracją, może być statyczna bo konfigu używasz wszędzie (owszem może być i singleton)

poszukaj na webmastah.pl o static, tam jest fajny art dlaczego nie warto ich stosować.

Z drugiej strony to jest trend. To co kiedyś było dobre super ohh ahhh teraz uważa się za antywzorzec.
Fred1485
No już mi to rozjaśniło myśli trochę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.