Do czego są stałe w PHP?

0

Cześć! Jakiś czas temu natknąłem się na termin stałych w PHP, poczytałem o tym i wiem, jak się je definiuje, i czym są... Ale nie rozumiem do czego służą... Poco jest "pojemnik na dane" którego wartości nie można zmienić, skoro ma się zmienną, a jej wartość da się zmienić... Nie rozumiem tego... Czy mógłby mi to ktoś wytłumaczyć?

3

Uznajmy, że robisz klasę do obliczania powierzchni koła - będziesz musiał wykorzystać PI - ale czy PI jest zmienną? Przecież jej wartość jest stała. Więc definiujesz sobie stałą PI o wartości X i tyle. Wydajnościowo jest to lepsze. A tutaj masz listę dostępnych stałych: http://php.net/manual/pl/reserved.constants.php

1

Prosty przykład, dlaczego warto używać stałych.
Zastanów się który kod jest czytelniejszy:

ten:

foreach($arrayOfElements as $element) {
     if($element->type == 5) {
            /// cos tam robi
     } else if($element->type == 23) {
             // zrob costam innego
     }
}

czy ten:

foreach($arrayOfElements as $element) {
     if($element->type == Element::TYPE_NEW) {
            /// cos tam robi
     } else if($element->type == Element::TYPE_OLD) {
             // zrob costam innego
     }
}
1

Powiedzmy, że tworzysz sobie klasę, która przyjmuje jakiś parametr. Załóżmy, że tym parametrem jest jakiś ciąg znaków, definiujący szablon tego, co ma być zwracane.
Czasami bywa, że taki ciąg znaków powtarza się za każdym razem w innych implementacjach.

Ok, przykład z życia:
Korzystasz często z funkcji date( $fromat ).
Oczywiście, możesz wpisać z ręki ciąg znaków, ale możesz też skorzystać z presetów

title

0

Stałe niekoniecznie muszą być stałe, to znaczy - kiedy chcesz mieć możliwość szybkiej zmiany jakiejś wartości w wielu miejscach w kodzie, jak np. domyślna stawka VAT (teraz 23), to możesz do tego użyć stałej (chociaż ja wolałbym zmienną statyczną, albo inne rozwiązanie).

Kiedy stawka VAT się zmieni, zmieniasz ją tylko w stałej (np. w jakimś pliku bootstrap albo w jednej klasie) zamiast w wielu miejscach w kodzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1