Pracuję nad aplikacją internetową, która wyświetla dziesiątki równoczesnych użytkowników na sekundę. Mam klasę, która będzie instancjonowana wiele razy w ramach tego samego ładowania strony. W tej klasie mam pewne właściwości, które zawsze będą takie same dla każdego obiektu, więc myślę o deklarowaniu tych właściwości jako static
w celu zmniejszenia ilości pamięci, która będzie używana, gdy wiele instancji tej klasy zostanie utworzonych podczas to samo żądanie strony.Czy korzystanie ze statycznych metod i właściwości w PHP wymaga mniej pamięci?
Czy to spowoduje mniej pamięci dla tej aplikacji, ponieważ PHP może przechowywać wartość właściwości statycznych tylko raz? Czy to pozwoli zaoszczędzić pamięć użytkownikom współbieżnym lub tylko w ramach każdego procesu PHP?
Jak to działa w przypadku metod? Jeśli oznacza to, że obiekty mogą przetwarzać te same metody, to dlaczego wszystkie metody klasy nie mogą być uznane za statyczne, jeśli próbujesz zapisać w pamięci?
Nie czuję się całkowicie komfortowo z tym, dlaczego i kiedy należałoby zadeklarować nieruchomość lub metodę statyczną, ale rozumiem, że deklarowanie ich jako statycznych umożliwia dostęp do nich bez tworzenia obiektu klasy (to wydaje się być hack ... te metody i właściwości powinny być gdzie indziej ... nie?). Interesuje mnie sposób, w jaki deklaracja static
wpływa na użycie pamięci, aby ograniczyć obciążenie pamięci na moim serwerze sieciowym ... i ogólnie, aby lepiej zrozumieć, co się dzieje.
Nie rozumiem, dlaczego zostało to zamknięte. Pytanie jest bardzo szczegółowe i na pewno istnieje dokładna i niepodważalna odpowiedź. –
Naprawdę dobre i dokładne pytanie, ale chcę zwrócić uwagę na widoczność funkcji w PHP (która wywodzi się z OOP) dla pytania twojego "_Jeśli to oznacza, że obiekty mogą przetwarzać te same metody, to dlaczego nie wszystkie metody klasa może zostać uznana za statyczną, jeśli próbujesz oszczędzać na pamięci? ". Istnieją funkcje MOGĄ być statyczne, a funkcje NIE MUSZĄ być statyczne - te, które pobierają/ustawiają zmienne klasy, które zależą od procedury inicjalizacji klasy. Głównym ograniczeniem jest ten obiekt (instancję), z którym mamy do czynienia w tym czasie. – ozanmuyes