Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czy ta klasa jest dobra?
alex011251
post 25.05.2013, 17:27:06
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


  1. <?php
  2. class classSecurityBasicAuth {
  3. public $zmienna = '';
  4. public function __construct($url, $komunikat) {
  5. $handle = curl_init($url);
  6. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($handle, CURLOPT_NOBODY, true);
  8. curl_exec($handle);
  9.  
  10. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  11. if ($httpCode == 200) {
  12. $this -> zmienna = '<img src="'.$url.'" />';
  13. } else {
  14. $this -> zmienna = $komunikat;
  15. }
  16. curl_close();
  17. }
  18. public function funkcja() {
  19. return $this->zmienna;
  20. }
  21. }
  22.  
  23.  
  24.  
  25.  
  26. $security = new classSecurityBasicAuth('http://c.allegrostatic.pl/images/velalayout/434de666.allegro-logo.png', '<img src= "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Nie_istnieje.svg/100px-Nie_istnieje.svg.png"/>');
  27. echo $security->funkcja();
  28. ?>



Uprzedzam. Chodzi czy dobrze konstruuje tongue.gifP Bo ucze sie dopiero

Ten post edytował alex011251 25.05.2013, 17:39:28
Go to the top of the page
+Quote Post
Dipter
post 25.05.2013, 18:37:04
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


1. Co konkretnie chcesz osiągnąć, jakie zadanie ma pełnić ta klasa?
2. Jakie odniesienie ma nazwa klasy do tego co jest w środku?
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 18:38:35
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Klasa blokuje dodawanie "lewych" linkow. BaiscAuth - nazwa komunikatu gdy grafika zabezpieczona smile.gif. Wiec nazwa adekwatna.

Jak ktos skorzyst z tagu img na forach to to ma sprawdzac czy nie jest lewa grafika. Badz jakis url czy cos jezeli korzysta z innego tagu typu flash itp

Obiekt musze bardziej przystosowac by spelnial funkcje. To jest fakt

Ten post edytował alex011251 25.05.2013, 18:41:16
Go to the top of the page
+Quote Post
Dipter
post 25.05.2013, 18:50:22
Post #4





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


Mimo wszystko nadal nie przekonuje mnie nazwa tej klasy, zwłaszcza przedrostek "class".

Co do samego kodu:
  1. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  2.  
  3. if ($httpCode == 200) {
  4. $this -> zmienna = '<img src="'.$url.'" />';
  5. } else {
  6. $this -> zmienna = $komunikat;
  7. }

Właściwie to nic nie powinieneś opakowywać w HTML i ogólny zarys wyświetlania danego komunikatu/błędu. Klasa raczej powinna sprawdzać czy faktycznie link jest obrazkiem i zwracać true/false - do tego oczywiście odpowiednia metoda. Dlatego też na zewnątrz powinieneś się tym wynikiem posłużyć i wtedy wyświetlić komunikat, przekierować czy cokolwiek innego.

  1. public function funkcja() {
  2. return $this->zmienna;
  3. }

Niestety nie mówi to zbyt wiele, jedynie po zapisie można stwierdzić, że "zmienna" zostanie zwrócona. Mała rada: nie mieszaj angielskiego z polskim i jeszcze jakim językiem co by Ci do głowy przyszedł. Korzystaj z jednego (z reguły angielski). Do tego precyzuj nazwy metod, klas, zmiennych tak by było zrozumiałe co konkretnie dana rzecz robi.

Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 19:34:08
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


na nazwy poki co nie patrz.

  1. <?php
  2. class securityBasicAuth {
  3. public $zmienna = '';
  4. public function __construct($url) {
  5. $handle = curl_init($url);
  6. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($handle, CURLOPT_NOBODY, true);
  8. curl_exec($handle);
  9.  
  10. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  11. if ($httpCode == 200) {
  12. $this -> zmienna = TRUE;
  13. } else {
  14. $this -> zmienna = FALSE;
  15. }
  16. curl_close();
  17. }
  18.  
  19. public function open() {
  20. return $this -> zmienna;
  21. }
  22.  
  23. }
  24.  
  25. $link = 'http://c.allegrostatic.pl/images/velalayout/434de666.allegro-logo.png';
  26. $neg ='https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Nie_istnieje.svg/100px-Nie_istnieje.svg.png';
  27. $security = new securityBasicAuth($link);
  28. $wynik = $security -> open();
  29.  
  30. if($wynik){
  31. echo '<img src="'.$link.'" />';
  32. }else{
  33. echo '<img src= "'.$neg.'"/>';
  34.  
  35. }
  36. ?>
Go to the top of the page
+Quote Post
Dipter
post 25.05.2013, 20:08:53
Post #6





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


Nie wiem dlaczego konstruktor robi aż tyle u Ciebie, przekaż w nim zaledwie adres obrazka, następnie stwórz metodę, w której odpalisz całego cURL, następnie przetworzysz informację, a dopiero później sprawdzaj czy obrazek jest faktycznie obrazkiem.

W chwili obecnej zrobiłeś opakowanie przy pomocy klasy na coś, co mogłoby spokojnie być zwykłą funkcją.
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 20:17:58
Post #7





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


czyli
construktor
jakas metoda - z curlem
i sprawdzanie w kolejnej metodzie czy jest czy nie ma.


?

OOP myslalem ze bedzie latwiejsze. A dluga droga przedemna

Go to the top of the page
+Quote Post
Dipter
post 25.05.2013, 20:35:51
Post #8





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


No tak to mniej więcej powinno wyglądać. Każda metoda powinna mieć jakieś zajęcie (czyt. coś wykonuje/zwraca/ustawia/modyfikuje etc.), lecz musi to być konkretne zadanie, nie moż robić wszystkiego.
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 21:49:04
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


  1. <?php
  2. class securityBasicAuth {
  3. public $zmienna = '';
  4. public function __construct($url) {
  5. $handle = curl_init($url);
  6. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($handle, CURLOPT_NOBODY, true);
  8. curl_exec($handle);
  9. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  10. }
  11. public function warunek() {
  12. if ($httpCode == 200) {
  13. $this -> zmienna = TRUE;
  14. } else {
  15. $this -> zmienna = FALSE;
  16. }
  17. }
  18.  
  19. function __descruct() {
  20. return $this -> zmienna;
  21. curl_close();
  22. }
  23. }
  24.  
  25. $link = 'http://c.allegrostatic.pl/images/velalayout/434de666.allegro-logo.png';
  26. $neg ='https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Nie_istnieje.svg/100px-Nie_istnieje.svg.png';
  27. $security = new securityBasicAuth($link);
  28. $wynik = $security -> __descruct();
  29.  
  30. if($wynik){
  31. echo '<img src="'.$link.'" />';
  32. }else{
  33. echo '<img src= "'.$neg.'"/>';
  34.  
  35. }
  36. ?>



Ale nie dziala
Go to the top of the page
+Quote Post
CuteOne
post 25.05.2013, 22:20:53
Post #10





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

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


Zmienne to nie właściwości klasy (zapomniałeś o $this)
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 22:30:15
Post #11





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Cytat(CuteOne @ 25.05.2013, 23:20:53 ) *
Zmienne to nie właściwości klasy (zapomniałeś o $this)

Dosyc juz tego mam. Nie na moje nerwy

Mogl bys wskazac w ktorym miejscu?
Go to the top of the page
+Quote Post
CuteOne
post 25.05.2013, 22:39:51
Post #12





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

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


  1. function sprawdz($url) {
  2. $handle = curl_init($url);
  3. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($handle, CURLOPT_NOBODY, true);
  5. curl_exec($handle);
  6.  
  7. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  8. if ($httpCode == 200) {
  9. $zmienna = TRUE;
  10. } else {
  11. $zmienna = FALSE;
  12. }
  13. curl_close();
  14.  
  15. return $zmienna;
  16. }
  17.  
  18.  
  19. $sprawdz = sprawdz('http://blablabla.pl/');
  20.  


Dobra rada... narazie pisz strukturalnie a w międzyczasie poczytaj parę poradników o OOP, zobacz jak to wygląda w popularnych frameworkach (CI, Zend, Kohana) i wróć do pisania gdy uznasz, że poznałeś podstawy

Ten post edytował CuteOne 25.05.2013, 22:41:30
Go to the top of the page
+Quote Post
alex011251
post 25.05.2013, 22:45:41
Post #13





Grupa: Zarejestrowani
Postów: 40
Pomógł: 3
Dołączył: 21.05.2013

Ostrzeżenie: (10%)
X----


Strulturalnie opanowane dlatego chcialem przejsc do OOP . Metoda prob i bledow.
Ale czasem po prostu nie rozumiem . Jezeli cos jest publiczne to powinno wspolgrac. A nie jak ze usune oddzielajace public function

Jak wykonam tak to działa

Ale jak chce oddzielic jak wyzej to juz nie

  1. <?php
  2. class securityBasicAuth {
  3. public $zmienna = '';
  4. public function __construct($url) {
  5. $handle = curl_init($url);
  6. curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  7. curl_setopt($handle, CURLOPT_NOBODY, true);
  8. curl_exec($handle);
  9. $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
  10.  
  11.  
  12. if ($httpCode == 200) {
  13. $this -> zmienna = TRUE;
  14. } else {
  15. $this -> zmienna = FALSE;
  16. }
  17.  
  18. }
  19. function __descruct() {
  20. return $this -> zmienna;
  21. curl_close();
  22. }
  23. }
  24.  
  25. $link = 'http://c.allegrostatic.pl/images/velalayout/434de666.allegro-logo.png';
  26. $neg ='https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Nie_istnieje.svg/100px-Nie_istnieje.svg.png';
  27. $security = new securityBasicAuth($link);
  28. $wynik = $security -> __descruct();
  29.  
  30. if($wynik){
  31. echo '<img src="'.$link.'" />';
  32. }else{
  33. echo '<img src= "'.$neg.'"/>';
  34.  
  35. }
  36. ?>


Ten post edytował alex011251 25.05.2013, 22:51:25
Go to the top of the page
+Quote Post
Dipter
post 25.05.2013, 23:40:58
Post #14





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 28.11.2010
Skąd: Kraków

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


Do każdej metody/właściwości zawartej w tej klasie (lub też tej, po której dziedziczysz, choć nie zawsze) odwołujesz się poprzez $this, to logiczne. Ponadto korzystaj z widoczności w klasach private/protected/public, bo samo "function" nie jest poprawne.

Tak jak napisał CuteOne, przeczytaj kilka poradników o OOP, oraz poznaj zasady takie jak SRP, KISS, DRY i wiele innych, bo w chwili obecnej szukasz problemów na siłę i próbujesz stworzyć coś co nie do końca tak powinno wyglądać.

Przeczytaj też o metodach magicznych, bo nie ma czegoś takiego jak __descruct, w dodatku nie wywołuje się tej metody z zewnątrz.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:16