Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Klasa i konstruktor
Arhimenrius
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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.

Ten post edytował Arhimenrius 9.05.2012, 14:01:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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.

Ten post edytował Crozin 9.05.2012, 14:07:56
Go to the top of the page
+Quote Post
Arhimenrius
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


  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.

Ten post edytował Arhimenrius 9.05.2012, 14:14:18
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


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

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

 



RSS Aktualny czas: 28.09.2025 - 14:15