Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal do iMasters, estou á alguns dias estudando sozinho é claro, php orientado a objetos e fiz uma pequena classe de upload só para testar o que aprendi é gostaria que vocês avaliassem apontado o que errado e o que esta certo (se à realmente alguma coisa certa).
class upLoad {
public $arquivoTmp;
public $arquivo;
public $diretorio;
function uploads() {
$extensao = end(explode(".", $this->arquivo));
$nome = md5(uniqid(rand(), true));
$novoNome = $nome.'.'.$extensao;
move_uploaded_file($this->arquivoTmp, $this->diretorio.$novoNome);
}
}
$up = new upLoad();
$up->diretorio = "upload/";
$up->arquivoTmp = $_FILES["arquivo"]["tmp_name"];
$up->arquivo = $_FILES["arquivo"]["name"];
$up->uploads();Valeu pelas dicas. sei que é só a ponta do iceberg.
Olha, algumas dicas pra você que está começando.
Siga as convenções de nomes:
:seta: http://framework.zend.com/manual/1.12/en/coding-standard.naming-conventions.html
Estude bastante a teoria de orientação a objetos, de preferência em livros.
Pra começar, é uma má prática haver propriedades públicas na sua classe. Você deve declará-las todas privadas e ter métodos acessores a elas. Nesses métodos acessores, você pode fazer validações do tipo: é um diretório válido isso aí?
Também se preocupe em dar um nome significativo aos métodos de uma classe (as funções), o que facilita muito pra quem lê o código.
Obrigado Henrique! e quais livros vocês indicariam para quem esta iniciando.
Outras dicas...
Como já foi dito sobre as propriedades públicas, mesmo que o Henrique tenha esquecido do "Oi, eu sou Goku" que ele sempre escreve, todas as informações que você hoje seta graças a visibilidade extrema das tais propriedades, você faria no construtor da classe.
Isso porque essas informações fazem parte do objeto desde sua criação e se faz parte da criação deve ser construído, logo, __construct(). :thumbsup:
O objetivo de uma classe é facilitar o trabalho de quem a utilizar, sempre! Isso significa que ela deve considerar o maior número de possibilidades do mesmo assunto possível.
Isso quer dizer que apesar de nominalmente um processo de upload envolver um campo HTMl do tipo FILE que é acessado via $_FILES, mas na prática essa não é a única forma de upload.
Existem técnicas que fazem upload via PUT ao invés de via GET e que permite fazer muitas coisas legais como por exemplo downloads/uploads resumíveis.
Existe a possibilidade de você fazer um upload indireto para o seu servidor por copiar um recurso remoto a partir de um URL dado pelo usuário.
O usuário... Ah! O usuário! ele não quer saber fazer a coisa, quer apenas ter ela feita. Ele pode, de repente, nem saber que $_FILES existe. :o
cara é um bom começo, mas o PHP OO esta mais além disso.
trabalhar com interfaces e responsabilidade única são coisas complicada.
um exemplo aproveitando seu code.
Se um dia quiser que os arquivos no formato XLS fossem para uma pasta especifica.
você voltaria no seu "objeto" e colocaria uma condição para isso o que esta incorreto quanto ao aproveitamento do seu obj.
tomar cuidado também com a visibilidade das propriedades.