Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Konstruktor w klasie
Szymad
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.12.2011

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


Witam, mam kod. Uwaga, nazwy zmiennych kopiowałem z jednej funkcji tworząc kolejne, dlatego nazwy są takie same, a odnoszą się do czego innego.

  1. class Equal{
  2.  
  3. public $CONFIRM_ID = 1;
  4. public $ACCOMPANYING_ID = 0;
  5.  
  6.  
  7.  
  8. public $oldCountCONFIRM = 0;
  9. public $oldCountACCOMPANYING = 0;
  10. public $newCountCONFIRM = 0;
  11. public $newCountACCOMPANYING = 0;
  12.  
  13. public $oldMagazineCONFIRM = 0;
  14. public $oldMagazineACCOMPANYING = 0;
  15. public $newMagazineCONFIRM = 0;
  16. public $newMagazineACCOMPANYING = 0;
  17.  
  18. public $differenceCONRIRM = 0;
  19. public $differenceACCOMPANYING = 0;
  20.  
  21. public function __constructor(){
  22.  
  23.  
  24. $this->getProductsConfirm();
  25. $this->getProductsAccompanying();
  26. $this->getMagazineConfirm();
  27. $this->getMagazineAccompanying();
  28.  
  29. }
  30.  
  31. protected function getProductsConfirm(){
  32.  
  33. /**
  34.   *
  35.   * POBIERA INFORMACJE, KTÓRE PRODUKTY SŁUŻĄ
  36.   * ZA UPOMINKI DLA POTWIERDZONYCH
  37.   **/
  38. $link = getConnect();
  39. $query2 = "SELECT * FROM `ad_config`";
  40. $ac = mysqli_query($link,$query2);
  41. $temp = mysqli_fetch_row($ac);
  42. $for_confirm = $temp[2];
  43.  
  44.  
  45.  
  46.  
  47. return $for_confirm;
  48.  
  49. }
  50.  
  51. protected function getProductsAccompanying(){
  52.  
  53. /**
  54.   *
  55.   * POBIERA INFORMACJE, KTÓRE PRODUKTY SŁUŻĄ
  56.   * ZA UPOMINKI DLA TOWARZYSZĄCYCH
  57.   **/
  58. $link = getConnect();
  59. $query2 = "SELECT * FROM `ad_config` WHERE `ID`=2";
  60. $ac = mysqli_query($link,$query2);
  61. $temp = mysqli_fetch_row($ac);
  62. $for_confirm = $temp[2];
  63.  
  64. return $for_confirm;
  65.  
  66. }
  67.  
  68. protected function getMagazineConfirm(){
  69.  
  70. /**
  71.   *
  72.   * POBIERA INFORMACJE, JAKI JEST STAN MAGAZYNOWY PRODUKTÓW,
  73.   * KTÓRE PRODUKTY SŁUŻĄ
  74.   * ZA UPOMINKI DLA POTWIERDZONYCH
  75.   *
  76.   **/
  77. $CONFIRM_ID = $this->getProductsConfirm();
  78.  
  79. if(($CONFIRM_ID)>0){
  80. $link = getConnect();
  81. $query2 = "SELECT * FROM `products` WHERE `ID`=".$CONFIRM_ID;
  82. $ac = mysqli_query($link,$query2);
  83. $temp = mysqli_fetch_row($ac);
  84. $for_confirm = $temp[2];
  85.  
  86. $this->$oldCountCONFIRM = $for_confirm;
  87.  
  88. return $for_confirm;
  89.  
  90. }else{
  91.  
  92. throw new Exception("[INNER_OBJ] Unknown ID of for Confirm Products");
  93. }
  94.  
  95.  
  96.  
  97. }
  98.  
  99. protected function getMagazineAccompanying(){
  100.  
  101. /**
  102.   *
  103.   * POBIERA INFORMACJE, JAKI JEST STAN MAGAZYNOWY PRODUKTÓW,
  104.   * KTÓRE PRODUKTY SŁUŻĄ
  105.   * ZA UPOMINKI DLA TOWARZYSZĄCYCH
  106.   *
  107.   **/
  108. $CONFIRM_ID = $this->getProductsAccompanying();
  109.  
  110. if(($CONFIRM_ID)>0){
  111. $link = getConnect();
  112. $query2 = "SELECT * FROM `products` WHERE `ID`=".$CONFIRM_ID;
  113. $ac = mysqli_query($link,$query2);
  114. $temp = mysqli_fetch_row($ac);
  115. $for_confirm = $temp[2];
  116. $this->$oldCountACCOMPANYING = $for_confirm;
  117. return $for_confirm;
  118.  
  119. }else{
  120.  
  121. throw new Exception("[INNER_OBJ] Unknown ID of for Confirm Products");
  122. }
  123.  
  124.  
  125.  
  126. }
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. public function equal(){
  134.  
  135.  
  136. echo "\n\tStan w magazynie dla potwierdzonych ".$this->$oldCountCONFIRM;
  137. echo "\n\tStan w magazynie dla potwierdzonych ".$this->$oldCountACCOMPANTING;
  138. }
  139. }


Otrzymuję: Fatal error: Cannot access empty property in /home/szymadjg/public_html/Lukasz/attendance/edit.php on line 146

Co robię źle?

Ten post edytował Szymad 17.11.2012, 20:59:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
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%)
-----


Ale skąd mamy wiedzieć, skoro nawet nie widzimy/nie wiemy gdzie jest magiczna linia numer 146? Poza tym wrzucaj SSCCE, a nie 150 linii kodu.
Go to the top of the page
+Quote Post
Szymad
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.12.2011

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


W pliku to ta linia
  1. echo "\n\tStan w magazynie dla potwierdzonych ".$this->$oldCountCONFIRM;
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


$oldCountCONFIRM pewnie jest null lub 0


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
CuteOne
post
Post #5





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


$this->$oldCountCONFIRM
powinno być
$this->oldCountCONFIRM
Go to the top of the page
+Quote Post
Szymad
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 1.12.2011

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


Bardzo dziękuję.
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tak tylko jeszcze w kwestii estetyczno-logicznej... W definicji klasy i jej atrybutów nie powinno się im nadawać wartości "na sztywno", czyli: public $CONFIRM_ID = 1; bo to nie miejsce na to. Od tego służy konstruktor. Inna sprawa to sensowność wykonywania niektórych operacji. Zauważ, że getProductsAccompanying() oraz getProductsConfirm() w konstruktorze są kompletnie zbędne. Nic nie robią, nic nie zwracają do użycia, nic nie inicjalizują. Są jednak wykorzystywane wewnątrz pozostałych 2 metod i tam faktycznie to co zwracają jest używane. To co dodatkowo lekko razi także to rzucanie wyjątku w else.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 19.08.2025 - 18:16