Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obliczanie wartości zmiennej w klasie
Forum PHP.pl > Forum > Przedszkole
MeGusta
Witam, mam klasę Settings, w niej mam wszystkie ważne zmienne, głownie chodzi mi o zmienna odnośnie płatności, w niej musze sobie obliczać np. prowizję ilosc złoty itp, jak to moge zrobić?
Poniżej kod który zwraca błąd ze względu na funkcję floor().

  1. class Settings {
  2. [...]
  3. public $sms = array(
  4. 0 => array(
  5. 'id' => 121,
  6. 'coins' => 10,
  7. 'netto' => floor($this->one_coin * 0.5)
  8. )
  9. );
  10. [...]
  11. }
nospor
wlasciwosc klasy na etapie definicji nie ma dostepu do $this....

Na przyszlosc POKAZUJ DOKLADNIE BLAD jaki masz, bo blad nie ma zadnego zwiazku z floor...
MeGusta
Rozumiem, dziekuje.
Jest jakaś opcja żeby to wyliczać we właściwości klasy? bo nawet nie działa takie cos:

  1. 'netto' => floor(1 * 0.5)


Błąd:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in ...
Pyton_000
W definicji możesz używać tylko typów skalarnych, żadnych funkcji.

Oblicz to sobie w konstruktorze
MeGusta
Nawet jeśli takich obliczeń będzie 20 to wszystko w konstruktorze obliczac? Nie ma lepszego sposobu? Bo będe musiał dla każdej oferty obliczać osobno
nospor
Nie wiem co dokladnie ma robic twoja klasa, ale na chwile obecna wyglada na zle zaprojektowana.

Generalnie powinna tam byc metoda np getSmsData() ktora zwroci twoja tablice dla SMS i jesli bedzie potrzeba to doliczyc sobie cos tam bazujac na aktualnych ustawieniach w obiekcie. Przeciez banalne floor to zadne obliczenia i nie zajedzie ci serwera. A nawet jak bedziesz mial naprawde skomplikowane obliczenia to mozesz je wyliczyc raz a wynik zwracac wielokrotnie.
Pyton_000
Bo zapewne zabierasz się do tego od dupy strony i nie koniecznie poprawnie...
Lepiej napisz co to ma być jak to ma działać itd. bo tu już zaczynamy wchodzić że masz źle zaprojektowany system.
Tomplus
Wrzucanie "stałych" do klasy to też zły pomysł.

Powinieneś wysłać tablicę z wartością ID i COINS do klasy
np.

new Settings($lista_ustawien);

I następnie w __construct poprzeliczać i dodać nowy klucz NETTO.
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-2025 Invision Power Services, Inc.