Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: OOP - problem z przekazywaniem zmiennych
Forum PHP.pl > Forum > PHP > Object-oriented programming
trol2
Mam nastepujacy problem. Napisalem taka klase (dla skrocenia kodu wyrzucilem pare funkcji, ale to nie istotne):

  1. <?php
  2. class user_manager
  3. {
  4.  
  5. public $login;
  6. public $pass1;
  7. public $pass2;
  8. public $email;
  9.  
  10. public function __get($nazwa)
  11. {
  12. return $this->$nazwa;
  13. }
  14.  
  15. public function __set($nazwa, $wartosc)
  16. {
  17. $this->$nazwa = $wartosc;
  18. }
  19.  
  20. public function __construct($login, $pass1, $pass2, $email)
  21. {
  22. require_once('funkcje/header.php');
  23.  
  24. $this->login = $login;
  25. $this->pass1 = $pass1;
  26. $this->pass2 = $pass2;
  27. $this->email = $email;
  28. }
  29.  
  30. public function Exist_data_1()
  31. {
  32.  
  33. if($this->login = '' or $this->pass1 = '' or $this->pass2 = '' or $this->email = '')
  34. {
  35. $_SESSION['blad_rej'] = 1;
  36. $_SESSION['login_r'] = "$this->login";
  37. $_SESSION['mail_r'] = "$this->email";
  38. my_header($do = 'zarejestruj.php', $czas = 0);
  39. }
  40.  
  41. }
  42.  
  43. public function Login_ok()
  44. {
  45. if(!ctype_alnum($this->login))
  46. {
  47. $_SESSION['blad_rej'] = 1;
  48. $_SESSION['login_r'] = "$this->login";
  49. $_SESSION['mail_r'] = "$this->email";
  50. my_header($do = 'zarejestruj.php', $czas = 0);
  51. }
  52. }
  53.  
  54. public function Haslo_ok()
  55. {
  56. if($this->pass1 != $this->pass2)
  57. {
  58. $_SESSION['blad_rej'] = 2;
  59. $_SESSION['login_r'] = "$this->login";
  60. $_SESSION['mail_r'] = "$this->email";
  61. my_header($do = 'zarejestruj.php', $czas = 0);
  62. }
  63. }
  64.  
  65. public function Zarejestruj()
  66. {
  67. $this->Exist_data_1();
  68. $this->Login_ok();
  69. $this->Haslo_ok();
  70. $this->Email_ok();
  71. $this->Zarejestruj_go();
  72. }
  73.  
  74. }
  75. ?>


wywoluje nastepujaca klase tak:

  1. <?php
  2. require_once('obiekty/user_manager.php');
  3. $usermng = new user_manager($login, $pass1, $pass2, $email);
  4.  
  5. $usermng->Zarejestruj();
  6. ?>


Jednak contruktor nie przypisuje zmiennym wartosci. Tak samo dzieje sie jezeli w kodzie dla kazdej zmiennej dam $usermng->login = $login; Dziala jedynie jak przekazuje niezbedne zmienne do kazdej funkcji, wtedy wywoluje bez $this-> . Co w tym kodzie jest nie tak ze nie przypisuje wartosci zmiennym clasy?
Morkai
1. Zdecyduj się na jeden język... polski albo angielski
2. Po co __get()/__set() skoro zmienne w klasie są publiczne?
3. Nie musisz wsadzać zmiennych w cudzysłowy. $_SESSION['login_r'] = $this->login; też zadziała i ładniej wygląda winksmiley.jpg
4. Wrzuć var_dump( $login ); przed i po require w konstruktorze i powiedz co wywala.
5. Co robi plik funkcje/header.php?
trol2
Cytat
1. Zdecyduj się na jeden język... polski albo angielski


ok, to pozniej, napewno nie wplywa to na dzialanie skryptu.

Cytat
2. Po co __get()/__set() skoro zmienne w klasie są publiczne?


usunalem.

Cytat
3. Nie musisz wsadzać zmiennych w cudzysłowy. $_SESSION['login_r'] = $this->login; też zadziała i ładniej wygląda


cudzyslowia tez usunalem.


Cytat
4. Wrzuć var_dump( $login ); przed i po require w konstruktorze i powiedz co wywala.



W kodzie przed require i po require jest prawidlowy login, w construktorze tak samo, w dowolnej funkcji (bez przekazywania jej zmiennej $login) po wpisaniu bez this jest tez prawidlowy login, a po wpisaniu z $this->login jest NULL

Cytat
5. Co robi plik funkcje/header.php?


to jest przeniesienie do innej strony przy pomocy znacznikow META, tam przyjmuje zmienna $do i $czas .
dr_bonzo
  1. <?php
  2. if($this->login = ''
  3. ?>


lol

'=' != '=='
trol2
Faktycznie. Operator przypisania zamiast operatora porownania biggrin.gif juz powinno byc ok. Nie przykladalem do tego specialnej uwagi, bo kod sprawdzajacy kopiowalem z funkcji, a wczasniej dzialal. Musialem gdzies przy zmianie tych $this-> usunac znak rownosci.
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.