Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna nie przyjmuje wartości z funkcji klasowej
Forum PHP.pl > Forum > Przedszkole
dr revuu
Problem wygląda następująco. Mam funkcję klasy:

  1. class jakasklasa{
  2. function jakasfunkcja($dana){
  3. if(empty($dana)==TRUE){
  4. $dana=0;
  5. }
  6. }
  7. }


Piszę sobie:

  1. $zmiana = new jakasklasa;
  2. $zmiana->jakasfunkcja($jakas_dana);


I niestety zmienna nie zmienia mi się na podaną cyfrę (0). Jeśli wstawię tam instrukcję echo to działa. Pomyślałem, że może trzeba zwrócić zmienną i użyłem return, ale również nic. Proszę o sugestie.
everth
Skąd wiesz że nic się nie zmienia skoro ta metoda nic nie zwraca? Masz na myśli coś takiego:
  1. function check_empty($jakas_zmienna) { //bez sensu, ale co tam
  2. return (int) empty($jakas_zmienna);
  3. }

Czy raczej takiego?
  1. class chockiKlocki {
  2. private $zmienna = NULL;
  3. function set_zmienna($jakaszmienna) { //ustawia właściwość obiektu zmienna
  4. $this->zmienna = $jakaszmienna;
  5. return $this;
  6. }
  7. }
dr revuu
Już raczej to drugie. Chodzi mi o to, aby mieć funkcję klasową, która sprawdza czy podany ciąg (zmienna) jest pusty, a jeśli tak to zamienia go na 0 (zero) i zwraca zmienną, tak abym mógł dalej na niej operować.

Ty podałeś w drugiej funkcji jak się zwraca atrybut, ale mi chodzi o zmienną o konkretniej nazwie.
everth
To chyba ty chcesz mieć zwykłą funkcję (pal licho czy umieszczoną w klasie) w stylu:
  1. class jakasklasa{
  2. function jakasfunkcja($dana){
  3. if(empty($dana)){
  4. return 0;
  5. } else {
  6. return $dana;
  7. }
  8. }
  9. }
dr revuu
Chodziło mi o to, że zmienna nie była widoczna poza funkcją lub poza funkcją miała nie zmienioną wartość. Rozwiązaniem jest przekazanie jej przez referencje (lub zmienienie jej statusu na globalną). Wszystkich, którzy w konstruktywny sposób chcieli mi pomóc, nagrodzę.
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.