Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] Dodawanie poprzedniej wartości zmiennej - jak wyzerować
GreeN_DG
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 3.12.2009

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


Witam. Mam pewien problem :

Powiedzmy że mam taką metodę klasy "imgfile" :

  1. public function isExistFile($imgid)
  2. {
  3. $this->filelink .= $imgid.'.jpg';
  4. if(file_exists($this->filelink))
  5. {
  6. return $this->filelink;
  7. }
  8. else
  9. {
  10. return $this->filelink;
  11. }
  12. }


Teraz w innej klasie wywołuję tą metodę :

  1. $upload = new imgfile;
  2.  
  3. while ($row = $wynik->fetch_assoc())
  4. {
  5.  
  6. if($akcja = $upload->isExistFile($row['imgid']))
  7. {
  8. print_r($akcja);
  9. array_push($this->imgtab, $row);
  10. }
  11. else
  12. {
  13. ...
  14. ...
  15. }
  16. }


$row['imgid'] - zawiera kolejne id obrazków np. 1,2,3,4

Po odpaleniu :

Daje mi takie coś :

  1. ../uimages/28.jpg../uimages/28.jpg29.jpg../uimages/28.jpg29.jpg30.jpg../uimages/28.jpg29.jpg30.jpg31.jpg


Zamiast zwrócić :

  1. ../uimages/28.jpg../uimages/29.jpg../uimages/30.jpg


Gdy w pętle 'while' dodam za każdym razem - $upload = new imgfile to problem się rozwiązuje (ale po co na nowo tworzyć obiekt klasy). Dlaczego metoda zwraca sumę kolejnych $row['imgid'] ?

Ten post edytował GreeN_DG 9.02.2011, 16:46:34


--------------------
- WWW.GETICA.PL - strony WWW, logotypy, ilustracje - ZAPRASZAMY!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
TheTester
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 11.03.2009

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


Przypuszczam, że chodzi o ten fragment:
  1. $this->filelink .= $imgid.'.jpg';

Czy jak usuniesz kropkę przed znakiem "=", to działa tak jak chcesz?
Go to the top of the page
+Quote Post
GreeN_DG
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 3.12.2009

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


Po pierwsze proszę o przeniesienie --> OOP (pomyliłem dział)

Kropka ma myć :

Pole $filelink posiada wartość :

  1. private $filelink = '../uimages/';


Więc :

  1. $this->filelink .= $imgid.'.jpg';


Gdy np. $imgid = 1;

Ma to dać :

  1. ../uimages/1.jpg


Niestety za drugim wywołaniem metody pole $filelink wygląda tak :

  1. ../uimages/1.jpg2.jpg


Zamiast :

  1. ../uimages/2.jpg


Ten post edytował GreeN_DG 9.02.2011, 16:28:27


--------------------
- WWW.GETICA.PL - strony WWW, logotypy, ilustracje - ZAPRASZAMY!
Go to the top of the page
+Quote Post
kalmaceta
post
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


masz jeden obiekt w którym jest pole filelink , do którego cały czas dodajesz ciągi znaków przez tą kropkę ".=". Najprzejrzyściej jest tworzyć obiekt w pętli while. Ew. możesz dodać metodę czysc() która ustawia filelink na domyślną wartość, ale wtedy jaki jest sens istnienia obiektu.

Ten post edytował kalmaceta 9.02.2011, 17:50:06


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
GreeN_DG
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 3.12.2009

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


Teraz zrozumiałem ten problem. Jak będzie się miało do wydajności jeśli za każdym razem w pętli while będzie tworzony nowy obiekt (na szczęście nie kolejny bo ten nowy będzie zastępował stary, bowiem zmienna wskazująca będzie taka sama).

Ten post edytował GreeN_DG 9.02.2011, 18:25:15


--------------------
- WWW.GETICA.PL - strony WWW, logotypy, ilustracje - ZAPRASZAMY!
Go to the top of the page
+Quote Post
franki01
post
Post #6





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Po co tworzyć nowy obiekt? Jeżeli przy inicjacji obecnego obiektu masz domyślą wartość $this->filelink, do której tylko dopisujesz nazwę pliku, zrób inaczej. W klasie stwórz zmienną $this->fileLinkDefault i mu przypisz domyślną wartość, a potem zamiast:
  1. $this->filelink .= $imgid.'.jpg';

daj:
  1. $this->filelink = $this->filelinkDefault.$imgid.'.jpg';
Go to the top of the page
+Quote Post
kalmaceta
post
Post #7





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


@franki01 z takim podejściem jak prezentujesz do OOP - zadaj pytanie po co w ogóle obiekt.

Ten post edytował kalmaceta 10.02.2011, 13:01:33


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
GreeN_DG
post
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 3.12.2009

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


Przyznam się szczerze, że zamotałem się a rozwiązanie było takie proste. Doszukiwałem się sam nie wiem czego a jak @franki01 pisał tu chodziło o przypisywanie wartości do zmiennej, no ale fakt faktem w tym wypadku sens istnienia obiektu jest znikomy. Wystarczy w tamtej klasie sprawdzić "file_exists" bez tworzenia obiektu.


--------------------
- WWW.GETICA.PL - strony WWW, logotypy, ilustracje - ZAPRASZAMY!
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 - 22:05