Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][OOP], klasa obliczania daty urodzenia
ostrylg
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 18
Dołączył: 11.12.2005
Skąd: Gdańsk

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


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ć ?

Ten post edytował ostrylg 4.03.2009, 03:58:05
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


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


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Foxx
post
Post #3





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


  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

Ten post edytował Foxx 4.03.2009, 04:51:44
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 Aktualny czas: 21.08.2025 - 20:32