Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]poprawność kodu, pisanie klas
Forum PHP.pl > Forum > Przedszkole
wpaski
Prosiłbym o przyjrzenie się tej prostej klasie i ew. wskazanie mi błędów co zmienić w sposobie pisania, zastanawiałem się czy użyć dla zmiennych private czy public, uznałem, że nie ma potrzeby dostępu z poza klasy, druga moja wątpliwość to kod html zwracany w funkcji pobierzZdjecia(), czy należało by go odseparować? Np jeżeli chciałbym użyć tą klasę w stronie opartej o wzorzec MVC, a ta klasa była by w bibliotekach ( czyli tzw. helper?)

  1. <?php
  2. class Galeria {
  3.  
  4. private $kat;
  5. private $katalog = 'obrazki/';
  6. private $katalogminiaturki = 'miniaturki/';
  7. private $galeria;
  8. private $zdjecie;
  9. private $odczyt;
  10.  
  11. public function __construct() {
  12. $this->kat = isset($_GET['kat']) ? $_GET['kat'] : 'dyrdy';
  13. $this->katalog = $this->katalog.$this->kat;
  14. $this->katalogminiaturki = $this->katalogminiaturki.$this->kat;
  15. }
  16. public function pobierzZdjecia() {
  17. $this->galeria = opendir($this->katalog);
  18. while($this->zdjecie = readdir($this->galeria)) {
  19. $this->odczyt = pathinfo($this->katalog.'/'.$this->zdjecie);
  20. if($this->odczyt['extension'] == 'jpg') {
  21. return '<li><a href="'.$this->katalog.'/'.$this->zdjecie.'" class="highslide" onclick="return hs.expand(this)" title="Zdjęcie: '.$this->zdjecie.'"><img width="200" height="133" src="'.$this->katalogminiaturki.'/'.$this->zdjecie.'" alt="Zdjęcie: '.$this->zdjecie.'" /></a></li>';
  22. }
  23. }
  24. }
  25. }
  26.  
  27. $galeria = new Galeria();
  28. echo $galeria->pobierzZdjecia();
  29.  
  30. ?>
CuteOne
  1. //zamien
  2. $this->katalog = $this->katalog.$this->kat;
  3. //na
  4. $this->katalog = $this->kat;
  5. //a to na
  6. $this->setKatalog($this->kat);


Zobacz na swój kod - tak naprawdę są to funkcje al'a "Strukturalne PHP" z dodatkiem $this.

1. Podstawowa zasada, której staram się trzymać mówi, że dany obiekt powinien odpowiadać tylko jednej funkcjonalności. U Ciebie jest to mix z czytania plików z katalogu, sprawdzenia extension i zwrócenia html
2. Nawet w pisaniu strukturalnym nie powinno się mieszać HTML z PHP ty tutaj robisz to w sposób brutalny wink.gif
3. Jeżeli sprawdzasz listę plików z katalogu to
  1. // Tworzymy nową kolekcję dla zdjęć
  2. $this->_imagesCollection = new Collections_ImagesCollection();
  3.  
  4. // Obiekt odpowiedzialny za zarządzanie plikiem
  5. $this->_extension = new Library_File_Manager();
  6.  
  7. while($files = readdir($this->galeria)) {
  8.  
  9. if($this->_extension->checkExtension($file)) {
  10.  
  11. $this->_imagesCollection -> addImage(new ImagesEntity($file));
  12. }
  13. }

I działamy dopiero na kolekcji zdjęć.

edit: Crozin wpadł na chwilę smile.gif więc pewnie napisze coś mądrzejszego niż moje wypociny tongue.gif
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.