Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Początki z OOP, Krytyka, komentarze, pomoc w napisaniu lepszego kodu :)
Wicepsik
post
Post #1





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


Witam,
Zaczynam pisać w OOP, pomaga mi w tym kolega doradzając conieco. Chciałbym byście pomogli mi w pisaniu lepszego kodu. Przestawię wam moje wypociny.


  1. <?php
  2. class pogoda{
  3.  
  4.    public $web;
  5.    public $cities;
  6.    public $temp;
  7.    public $hpa;
  8.    
  9.    public function __construct($city){
  10. /*
  11. Wpisane wszystkie miasta które są dostępne w polsce
  12. */
  13.     $this->cities = array('Aleksandrów Kujawski' => 11642, 'Augustów' => 11643, 'Bartoszyce' => 11644, 'Bełchatów' => 11646, 'Będzin' => 11645, 'Biała Podlaska' => 11647, 'Białka Tatrzańska' => 11648, 'Białobrzegi' => 11649, 'Białogard' => 11650, 'Białystok' => 11651, 'Bielice' => 11652, 'Bielsk Podlaski' => 11653, 'Bielsko-Biała' => 11654);
  14.  
  15.    
  16.    
  17.        if(array_key_exists($city, $this->cities)){
  18.            $this->web = file_get_contents('http://pogoda.interia.pl/miasta?id='.$this->cities[$city]);
  19.            preg_match_all('/<b>([0-9]+)</b>/<span class="tex2B"  style="font-size:14px;">([0-9]+)</span>/<span class="tex3B">([0-9]+)</span>/', $this->web, $this->temp);
  20.            preg_match_all('/<b>([0-9]+)</b> hPa/', $this->web, $this->hpa);
  21.        }else{
  22.            echo 'Brak miasta!';
  23.        }
  24.        
  25.    }
  26.    
  27.    public function show_cities(){
  28.            $text = '<select>';
  29.        foreach($this->cities as $key => $value){
  30.            $text .= '<option value="'.$value.'">'.$key.'</option>';
  31.        }
  32.            $text .= '</select>';
  33.            
  34.        return $text;
  35.    }
  36.    
  37.    public function today_temp($mi = 0){
  38.              if($mi = 0){
  39.                  $text = $this->temp[1][0];
  40.              }else{
  41.                $text = $this->temp[3][0];
  42.              }
  43.         return $text;
  44.    }
  45.    
  46.    public function temp($mi = 0, $li = 0, $day = 0){
  47.              
  48.            $on = ($mi == 0) ? 1 : 3;
  49.            
  50.            switch($day){
  51.                case 0: if($li == 0) $of = 2; elseif($li == 1) $of = 3; else($li == 2) $of = 4; // przed południem, po południu, wieczorem
  52.                          break;
  53.                case 1: if($li == 0) $of = 5; elseif($li == 1) $of = 6; elseif($li == 2) $of = 7; else $of = 8; // nad ranem, przed południem, po południu, wieczorem
  54.                          break;
  55.                case 2: if($li == 0) $of = 9; elseif($li == 1) $of = 10; elseif($li == 2) $of = 11;  else $of = 12; // nad ranem, przed południem, po południu, wieczorem
  56.                          break;
  57.                case 3: $of = ($li == 0) ? 13 : 14;  // dzien, noc
  58.                          break;
  59.                case 4: $of = ($li == 0) ? 15 : 16;   // dzien, noc
  60.                          break;
  61.                case 5: $of = ($li == 0) ? 17 : 18;   // dzien, noc
  62.                          break;
  63.            }
  64.            
  65.         return $this->temp[$on][$of];
  66.    }
  67.    
  68.    public function hPa($mi = 0){
  69.    
  70.        return $this->hpa[1][$mi];
  71.    
  72.    }
  73.    
  74.    
  75.    public function __destruct() {
  76.        unset($this);
  77.    }
  78.    
  79.    
  80.    
  81.    
  82. }
  83.  
  84.  
  85.    $obiekt = new pogoda('Warszawa');
  86.    $obiekt->show_cities();
  87.    echo $obiekt->temp(1,1,1);
  88.    echo $obiekt->hPa(2);
  89. ?>


Ten post edytował Wicepsik 19.07.2009, 19:05:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
jednak wersja z konstruktorem wydaje się być lepsza. ;d

Śmiem się sprzeczać. Niby pod jakim względem lepsza? Potrafisz uzasadnić? Masz jakieś argumenty?

Cytat
Wcześniej były echa, ja mu doradziłem aby zmienił na return.

To nie jest na to miejsce. Widok/helper - owszem. Ale nie logika.

Cytat
Zwolnienie pamięci uważasz za bezsens? Gdyby to był większy system, też byłby to bezsens?

Eee, to jest inna sprawa. Zwalnianie zasobów SQL, to co innego. Poza tym, skrypt przy końcu robi to sam.

Poczytaj, kiedy jest wyzwalany destruktor, to wtedy porozmawiamy, czy jest sens korzystania z unset" title="Zobacz w manualu PHP" target="_manual na $this. [;
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 19.07.2009, 22:42:46 ) *
Śmiem się sprzeczać. Niby pod jakim względem lepsza? Potrafisz uzasadnić? Masz jakieś argumenty?

Jeżeli najdzie mnie myśl pobierania z konstruktora jakiegoś parametru to tylko w konstruktorze podmienię, nie muszę grzebać w reszcie kodu. ;p
Z resztą zazwyczaj ludzie tak piszą, że w klasie tylko definiują zmienne a w konstruktorze nadają im domyślne wartości.

Cytat(erix @ 19.07.2009, 22:42:46 ) *
Poczytaj, kiedy jest wyzwalany destruktor, to wtedy porozmawiamy, czy jest sens korzystania z unset" title="Zobacz w manualu PHP" target="_manual na $this. [;


Podczas niszczenia obiektu. A czy to taki duży błąd...? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie, ale fakt mogłoby go nie być.
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 23:17