Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP]
Forum PHP.pl > Forum > Przedszkole
ostrylg
Stworzyłem coś takiego :

  1. <?php
  2.   $data = date(Y);
  3.  
  4.   class ludek{
  5.      public $imie;
  6.      public $wiek;
  7.  
  8.      public function ustal_date(){
  9.         global $data;
  10.         $this -> dataU = $this -> data - $this -> wiek;
  11.      }
  12.  
  13.  
  14.   }
  15.  
  16.   $osoba = new ludek;
  17.   $osoba -> imie = Janek;
  18.  
  19.      $osoba -> wiek = 15;
  20.  
  21.   echo 'Data urodzenia tej osoby to : '.$osoba -> ustal_date(wiek).'<br/>';
  22.  
  23.  
  24. ?>


Jest to moja pierwsza klasa, i mam pytanie do Was, co w tym jest nie tak że nie wyświetla mi roku urodzenia ? Jak to skonstruować ?
dr_bonzo
1. co tu robi global?
2. nie deklarujesz $this->data, $this->dataU przed pierwsyzm uzyciem
3. poczytaj jak sie zmienne zapisuje ($wiek a nie wiek)
4. nie zwracasz nic z tej funkcji
Foxx
  1. <?php
  2. $data = date(Y); // to generuje notice
  3. $data = date('Y'); // tak jest dobrze
  4. ?>

  1. <?php
  2. $osoba -> imie = Janek; // stringi w php ujmujemy w cudzysłów
  3. $osoba -> imie = 'Janek'; // o tak
  4. ?>


Umieszczasz wiek w polu $osoba->wiek a potem odwołujesz się do zmiennej wiek i do tego zapominasz o znaku $
  1. <?php
  2. $osoba -> wiek = 15;
  3. echo 'Data urodzenia tej osoby to : '.$osoba -> ustal_date(wiek).'<br/>'; // źle
  4. echo 'Data urodzenia tej osoby to : '.$osoba -> ustal_date($osoba->wiek).'<br/>'; // dobrze
  5. ?>


Proponuję też zrezygnować z robienia globalnej daty i ustalania jej poza klasą. Po tych przeróbkach wygląda to tak:
  1. <?php
  2. class ludek{
  3.     public $imie;
  4.     public $wiek;
  5.  
  6.     public function ustal_date(){
  7.        $data = date('Y');
  8.        return $this->dataU = $data - $this->wiek;
  9.  
  10.     }
  11.  
  12.  
  13.  }
  14.  
  15.  $osoba = new ludek;
  16.  $osoba->imie = 'Janek';
  17.  $osoba->wiek = 15;
  18.  
  19.  echo 'Data urodzenia tej osoby to : '.$osoba -> ustal_date($osoba->wiek).'<br/>';
  20. ?>


// edit - zauważ że dodałem return do metody ustal_date
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.