Czy można zdefiniować stałą klasy wewnątrz funkcji konstruktora klasy?Jak zdefiniować stałą w konstruktorze klasy?
(w zależności od pewnych warunków)
Czy można zdefiniować stałą klasy wewnątrz funkcji konstruktora klasy?Jak zdefiniować stałą w konstruktorze klasy?
(w zależności od pewnych warunków)
Jest to sprzeczne z ideą stałych klasowych - nie powinny one być zależne od konkretnego przypadku. Zamiast tego powinieneś użyć zmiennej.
Jednakże, jeśli nalegasz na zrobienie tego, jesteś bardzo ryzykowny i możesz zainstalować rozszerzenia PHP, możesz rzucić okiem na rozszerzenie runkit, które pozwala modyfikować klasy i ich stałe w czasie wykonywania. Zobacz ten dokument: http://www.php.net/manual/en/function.runkit-constant-add.php
Nie sądzę, że można.
To też nie ma sensu - stała klasy może być używana w kontekście statycznym, gdzie nie ma żadnego konstruktora.
Zamiast tego musisz użyć zmiennej - po to są.
Spróbuj spojrzeć tutaj:
http://php.net/manual/en/language.oop5.constants.php
http://php.net/manual/en/language.oop5.static.php
Nadzieja to pomaga.
Publiczna zmienna statyczna $ – Andrew
Szukałem odpowiednika "statycznego finału" języka Java, który można ustawić w konstruktorze, ale niestety w stałych php są nieco inne. –
Jest to również sprzeczne z ideą stałych w ogóle, ale w PHP można dynamicznie definiować() stałą. –
Może to być przydatne, gdy chcesz zdefiniować stałe łańcuchowe, których wartości składają się z wartości innych stałych (w celu DRYANIA części wspólnych). Ponieważ PHP nie zezwala na wyrażenia (takie jak konkatenacja dwóch łańcuchów) w stałych wartościach, byłoby to przydatne w konstruktorze. –