Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obliczanie wartości zmiennej w klasie
MeGusta
post 3.07.2017, 11:01:00
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


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. }
Go to the top of the page
+Quote Post
nospor
post 3.07.2017, 11:04:06
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post 3.07.2017, 11:07:10
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


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 ...

Ten post edytował MeGusta 3.07.2017, 11:07:35
Go to the top of the page
+Quote Post
Pyton_000
post 3.07.2017, 11:09:11
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


W definicji możesz używać tylko typów skalarnych, żadnych funkcji.

Oblicz to sobie w konstruktorze
Go to the top of the page
+Quote Post
MeGusta
post 3.07.2017, 11:32:53
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
nospor
post 3.07.2017, 11:39:31
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 3.07.2017, 11:40:22
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Tomplus
post 3.07.2017, 16:36:13
Post #8





Grupa: Zarejestrowani
Postów: 1 874
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 16:14