Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pierwsza klasa
--gość--
post
Post #1





Goście







Witam uczę się właśnie programowania obiektowego i napisałem taką prostą klasę, czy moglibyście mnie nakierować na moje błędy?
  1. <?php
  2.  
  3. /**
  4.  * Klasa odpowiedzialna za upload
  5.  *
  6.  */
  7. class Upload {
  8.  
  9. /**
  10.   * Tablica zawierająca dopuszczalne formaty plików,
  11.   * jeżeli pusta to pozwala na wgrywanie dowolnego rodzaju pliku
  12.   * @var array
  13.   */
  14. protected $aAllowedExtensions = array();
  15.  
  16. /**
  17.   * Zawiera rozszerzenie pliku
  18.   * @var string
  19.   */
  20. protected $sFileExtension = '';
  21.  
  22. /**
  23.   * Dopuszczalny rozmiar pliku w bitach, domyślnie 1 MB
  24.   * @var int
  25.   */
  26. protected $iMaxSize = 8388608;
  27.  
  28. /**
  29.   * Tablica zawierająca kody błędów
  30.   * @var array
  31.   */
  32. protected $aErrorCodes = array(
  33. 1, //plik ma błędny typ
  34. 2, //plik jest zbyt duży
  35. 3, //brak pliku
  36. 4, //ścieżka nie pozwala na zapis
  37. 5. //inny błąd
  38. );
  39.  
  40. /**
  41.   * Ścieżka gdzie pliki mają być wgrywane
  42.   * @var string
  43.   */
  44. protected $sUploadPath = '';
  45.  
  46. /**
  47.   * Nazwa wgranego pliku, jeżeli pusta zostanie wygenerowana losowa
  48.   * @var string
  49.   */
  50. protected $sFileName = '';
  51.  
  52. /**
  53.   * Czy zachować oryginalną nazwę pliku,
  54.   * uwaga jeżeli true, to sFileName nie jest brane pod uwagę i
  55.   * zostanie nadpisana
  56.   * @var bool
  57.   */
  58. protected $bOriginalName = false;
  59.  
  60. /**
  61.   * Zawiera pełną ścieżkę wgranego pliku
  62.   * @var string
  63.   */
  64. protected $sResult;
  65.  
  66. /**
  67.   * Zawiera kod błędu
  68.   * @var int
  69.   */
  70. protected $iErrorCode = 0;
  71.  
  72.  
  73. /**
  74.   * Konstruktor
  75.   * @param string $sUploadPath
  76.   * @param array $aAllowedExtensions [optional]
  77.   * <p>Dopuszczalne formaty plików</p>
  78.   * @param int $iMaxSize [optional]
  79.   * <p>Maksymalny rozmiar pliku wgrywanego,
  80.   * podawana w bitach, domyślnie 1MB (8388608 bitów)</p>
  81.   * @return \lib_Upload
  82.   */
  83. public function __construct($sUploadPath, $aAllowedExtensions = array(), $iMaxSize = 8388608) {
  84. $this->sUploadPath = (string) $sUploadPath;
  85. $this->iMaxSize = (int) $iMaxSize;
  86. $this->aAllowedExtensions = $aAllowedExtensions;
  87. return $this;
  88. html_entity_decode($sUploadPath);
  89. }
  90.  
  91. /**
  92.   * @param type $sFileName
  93.   * @return \lib_Upload
  94.   */
  95. public function setFileName($sFileName) {
  96. $this->sFileName = $sFileName;
  97. return $this;
  98. }
  99.  
  100. /**
  101.   * Zwraca kod błędu
  102.   * @return int
  103.   */
  104. public function getErrorCode() {
  105. return $this->iErrorCode;
  106. }
  107.  
  108. /**
  109.   * Zwraca pełną scieżkę do pliku wgranego
  110.   */
  111. public function getResult() {
  112. return $this->sResult;
  113. }
  114.  
  115. /**
  116.   * Metoda sprawdzająca czy plik ma poprawne rozszerzenie
  117.   * return bool
  118.   */
  119. public function checkExtension($sFileName) {
  120. $aTmp = explode('.', $sFileName);
  121. if(!empty($aTmp)) {
  122. $this->sFileExtension = strtolower(end($aTmp));
  123. }
  124.  
  125. if(empty($this->aAllowedExtensions) || in_array($this->sFileExtension, $this->aAllowedExtensions)) {
  126. return true;
  127. } else {
  128. return false;
  129. }
  130. }
  131.  
  132. public function moveFile($sFileIndex) {
  133. if($this->bOriginalName) {
  134. $this->sFileName = $_FILES[$sFileIndex]['name'];
  135. } elseif(empty($this->sFileName)) {
  136. $this->sFileName = md5($_FILES[$sFileIndex]['name']).uniqid().'.'.$this->sFileExtension;
  137. }
  138. if(!empty($this->sUploadPath) && substr($this->sUploadPath, -1) !='/') {
  139. $this->sUploadPath .= '/';
  140. }
  141. $this->sResult = $this->sUploadPath.$this->sFileName;
  142.  
  143. if(move_uploaded_file($_FILES[$sFileIndex]['tmp_name'], $this->sResult)) {
  144. return true;
  145. } else {
  146. return false;
  147. }
  148. }
  149.  
  150. /**
  151.   * Metoda odpowiedzialna za upload
  152.   * @param string $sFileIndex
  153.   * @return boolean
  154.   */
  155. public function upload($sFileIndex) {
  156. if(isset($_FILES[$sFileIndex]) && is_uploaded_file($_FILES[$sFileIndex]['tmp_name']) ){
  157. if($_FILES[$sFileIndex]['size'] > $this->iMaxSize ){
  158. $this->iErrorCode = 2;
  159. return false;
  160. }
  161. if(!$this->checkExtension($_FILES[$sFileIndex]['name'])) {
  162. $this->iErrorCode = 1;
  163. return false;
  164. }
  165. if($this->moveFile($sFileIndex)) {
  166. return true;
  167. } else {
  168. $this->iErrorCode = 4;
  169. return false;
  170. }
  171.  
  172. }else {
  173. $this->iErrorCode = 3;
  174. return false;
  175. }
  176. }
  177.  
  178. }
  179.  
  180.  
  181. $oUpload = new Upload('tmp');
  182. if($oUpload->upload('img')) {
  183. //plik się wgrał poprawnie
  184. } else {
  185. echo $oUpload->getErrorCode(); //kod błędu
  186. }
  187.  

W zamyślę to będzie klasa matka dla klas odpowiedzialnych za wgrywanie i zabawę z obrazkami czy bardziej specyficznymi plikami
Go to the top of the page
+Quote Post

Posty w temacie


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: 20.08.2025 - 18:13