Witam uczę się właśnie programowania obiektowego i napisałem taką prostą klasę, czy moglibyście mnie nakierować na moje błędy?
<?php
/**
* Klasa odpowiedzialna za upload
*
*/
class Upload {
/**
* Tablica zawierająca dopuszczalne formaty plików,
* jeżeli pusta to pozwala na wgrywanie dowolnego rodzaju pliku
* @var array
*/
protected
$aAllowedExtensions = array();
/**
* Zawiera rozszerzenie pliku
* @var string
*/
protected $sFileExtension = '';
/**
* Dopuszczalny rozmiar pliku w bitach, domyślnie 1 MB
* @var int
*/
protected $iMaxSize = 8388608;
/**
* Tablica zawierająca kody błędów
* @var array
*/
protected
$aErrorCodes = array( 1, //plik ma błędny typ
2, //plik jest zbyt duży
3, //brak pliku
4, //ścieżka nie pozwala na zapis
5. //inny błąd
);
/**
* Ścieżka gdzie pliki mają być wgrywane
* @var string
*/
protected $sUploadPath = '';
/**
* Nazwa wgranego pliku, jeżeli pusta zostanie wygenerowana losowa
* @var string
*/
protected $sFileName = '';
/**
* Czy zachować oryginalną nazwę pliku,
* uwaga jeżeli true, to sFileName nie jest brane pod uwagę i
* zostanie nadpisana
* @var bool
*/
protected $bOriginalName = false;
/**
* Zawiera pełną ścieżkę wgranego pliku
* @var string
*/
protected $sResult;
/**
* Zawiera kod błędu
* @var int
*/
protected $iErrorCode = 0;
/**
* Konstruktor
* @param string $sUploadPath
* @param array $aAllowedExtensions [optional]
* <p>Dopuszczalne formaty plików</p>
* @param int $iMaxSize [optional]
* <p>Maksymalny rozmiar pliku wgrywanego,
* podawana w bitach, domyślnie 1MB (8388608 bitów)</p>
* @return \lib_Upload
*/
public function __construct
($sUploadPath, $aAllowedExtensions = array(), $iMaxSize = 8388608
) { $this->sUploadPath = (string) $sUploadPath;
$this->iMaxSize = (int) $iMaxSize;
$this->aAllowedExtensions = $aAllowedExtensions;
return $this;
}
/**
* @param type $sFileName
* @return \lib_Upload
*/
public function setFileName($sFileName) {
$this->sFileName = $sFileName;
return $this;
}
/**
* Zwraca kod błędu
* @return int
*/
public function getErrorCode() {
return $this->iErrorCode;
}
/**
* Zwraca pełną scieżkę do pliku wgranego
*/
public function getResult() {
return $this->sResult;
}
/**
* Metoda sprawdzająca czy plik ma poprawne rozszerzenie
* return bool
*/
public function checkExtension($sFileName) {
}
if(empty($this->aAllowedExtensions) || in_array($this->sFileExtension, $this->aAllowedExtensions)) { return true;
} else {
return false;
}
}
public function moveFile($sFileIndex) {
if($this->bOriginalName) {
$this->sFileName = $_FILES[$sFileIndex]['name'];
} elseif(empty($this->sFileName)) { $this->sFileName = md5($_FILES[$sFileIndex]['name']).uniqid().'.'.$this->sFileExtension; }
if(!empty($this->sUploadPath) && substr($this->sUploadPath, -1) !='/') { $this->sUploadPath .= '/';
}
$this->sResult = $this->sUploadPath.$this->sFileName;
return true;
} else {
return false;
}
}
/**
* Metoda odpowiedzialna za upload
* @param string $sFileIndex
* @return boolean
*/
public function upload($sFileIndex) {
if($_FILES[$sFileIndex]['size'] > $this->iMaxSize ){
$this->iErrorCode = 2;
return false;
}
if(!$this->checkExtension($_FILES[$sFileIndex]['name'])) {
$this->iErrorCode = 1;
return false;
}
if($this->moveFile($sFileIndex)) {
return true;
} else {
$this->iErrorCode = 4;
return false;
}
}else {
$this->iErrorCode = 3;
return false;
}
}
}
$oUpload = new Upload('tmp');
if($oUpload->upload('img')) {
//plik się wgrał poprawnie
} else {
echo $oUpload->getErrorCode(); //kod błędu }
W zamyślę to będzie klasa matka dla klas odpowiedzialnych za wgrywanie i zabawę z obrazkami czy bardziej specyficznymi plikami