Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasa i konstruktor
Forum PHP.pl > Forum > Przedszkole
Arhimenrius
Witam. Więc w szkole uczymy się C++ i jest tam taka możliwość, iż tworzę sobie konstruktor, w nim deklaruję podstawowe dane dla zmiennych i potem w klasie sobie zmiennych używam. A teraz moje pytanie, jak to wygląda w PHP?

  1. <?
  2. class Statystyki
  3. {
  4. public function __construct()
  5. {
  6. public static datatoday = date('Y-m-d');
  7. }
  8. public function ranktoday()
  9. {
  10.  
  11. global $db;
  12. $data = $db -> prepare("SELECT `actual_data` FROM `users` WHERE `usadmin` = 'administrator'");
  13. $data -> execute();
  14. $sprawdzdata = $data -> fetch(PDO::FETCH_ASSOC);
  15. if($datatoday !== $sprawdzdata['actual_data'])
  16. {
  17. $aktualizuj = $db -> prepare("UPDATE `users` SET `actual_data` = :data WHERE `usadmin` = 'administrator'");
  18. $aktualizuj -> bindValue(':data', $datatoday, PDO::PARAM_STR);
  19. $aktualizuj -> execute();
  20. $aktualizuj -> CloseCursor();
  21.  
  22. }
  23. }
  24. public function addtomonth()
  25. {
  26. }
  27. }
  28. ?>

Próbuję na różne metody to wywołać, a jednak mnie się nie udaje.Z góry dzięki za pomoc.
Crozin
Ani w C++, ani w PHP nie można deklarować właściwości obiektu (na co wskazuje użycie public) w konstruktorze - w ogóle wątpię by w jakimkolwiek języku było to możliwe.

1. Właściwości obiektu deklaruje się bezpośrednio w bloku klasy.
2. W konstruktorze co najwyżej można przypisać wartości do zadeklarowanych właściwości.
Arhimenrius
  1. class ulamek
  2. {
  3. public:
  4. int licznik;
  5. int mianownik;
  6. int nww;
  7.  
  8. friend ulamek pomnoz(ulamek u1, ulamek u2);
  9. friend ulamek dodaj(ulamek u1, ulamek u2);
  10. ulamek()
  11. {
  12. licznik=1;
  13. mianownik=1;
  14. }
  15. ulamek(int l, int m)
  16. {
  17. licznik = l;
  18. mianownik = m;
  19. }
  20.  
  21. [...]
  22.  
  23. };


Tak to wygląda w C++. Te zmienne które są w konstruktorze ulamek() mają taką wartość w każdej funkcji, chyba ze je zmienie (np. ulamek(int l, int m)). I właśnie takie coś chciałbym otrzymać w PHP.
Crozin
Jak widzisz w C++ deklaracje również są w bloku klasy, nie w konstruktorze (ulamek() czy ulamek(int, int)). W konstruktorze dopiero odwołujesz się do już zadeklarowanych zmiennych - definiujesz ich wartości.
Szymciosek
  1. class Nazwa
  2. {
  3. public $zmienna; //deklarujesz, że gdzieś tam dalej pojawi się taka zmienna
  4.  
  5. public function __construct($x)
  6. {
  7. //metoda __construct jest uruchamiana wraz z klasą i tu jesteś w stanie zadeklarować sobie zmienna
  8. $this->zmienna = $x;
  9. }
  10.  
  11. public function pokaz()
  12. {
  13. echo $this->zmienna;
  14. }
  15. }
  16.  
  17. $Nazwa = new Nazwa(5); //przekazujemy do konstruktora wartość 5, która zostaje przypisana do zmiennej w klasie
  18. $Nazwa->pokaz(); //uruchomienie metody pokaz(), która zwróci 5


Zapoznaj się z tym, to raczej taka podstawa jak i gdzie dawać zmienne

W Twoim przykładzie z C++ jest to na początku też deklarowane w ciele klasy.
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.