Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JapahReturN

Transformando classe em função... help

Recommended Posts

 

 

Esta dando erro nestas duas linhas: 

Undefined variable post na linha 28

Undefined variable post na linha 13

Qual o problema pessoal? obrg..
 

<?php

function Image($post, $maxWidth, $maxHeight, $folder){

  function salvar(){

    $extensao = getExtensao($post);

    date_default_timezone_set('America/Sao_Paulo'); //gera nome horaminutosegundodiamesano
    $novo_nome = date("His") . date("dmy") . "." . $extensao;

    $destino = $folder . $novo_nome; //localizacao do arquivo, ex: uploads/034308130917.jpeg

    if ( !move_uploaded_file($post['tmp_name'], $destino) ){ //move o arquivo
      if ($post['error'] == 1)
      return "Tamanho excede o permitido";
      else
      return "Erro " . $post['error'];
    }

    if (ehImagem($extensao)){

      list($maxWidth, $maxHeight, $tipo, $atributo) = getimagesize($destino); //list transforma variavel em array ... getimagesize = pega os tamanhos de uma imagem

      if(($maxWidth > $maxWidth) || ($maxHeight > $maxHeight))   //testa se é preciso redimensionar a imagem caso seja maior que o maximo permitido..

      redimensionar($maxWidth, $maxHeight, $tipo, $destino);  
    }
    return "Sucesso";
  }

  function getExtensao(){ //retorna a extensao da imagem
    $tmp = explode('.', $post['name']);
    $extensao = strtolower(end($tmp));
    return $extensao;
  }

  function ehImagem($extensao){
    $extensoes = array('gif', 'jpeg', 'jpg', 'png');	 // extensoes permitidas
    if (in_array($extensao, $extensoes))
    return true;
  }

  function redimensionar($imgLarg, $imgAlt, $tipo, $img_localizacao){ //largura, altura, tipo, localizacao dados da imagem ORIGINAL tmp

    if( $imgLarg > $imgAlt ){ //descobrir se é horizontal ou vertical.. para redimencionar sem perder proporção
      $novaLarg = $maxWidth;
      $novaAlt = round( ($novaLarg / $imgLarg) * $imgAlt );
    }
    elseif ( $imgAlt > $imgLarg ){
      $novaAlt = $maxHeight;
      $novaLarg = round( ($novaAlt / $imgAlt) * $imgLarg );
    }
    else // altura == largura; imagem quadrada
    $novaAltura = $novaLargura = max($maxWidth, $maxHeight);


    $novaimagem = imagecreatetruecolor($novaLarg, $novaAlt);  //cria uma nova imagem redimencionada


    switch ($tipo){
      case 1:	// gif
      $origem = imagecreatefromgif($img_localizacao);
      imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt);
      imagegif($novaimagem, $img_localizacao);
      break;
      case 2:	// jpeg
      $origem = imagecreatefromjpeg($img_localizacao);
      imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt);
      imagejpeg($novaimagem, $img_localizacao);
      break;
      case 3:	// png
      $origem = imagecreatefrompng($img_localizacao);
      imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt);
      imagepng($novaimagem, $img_localizacao);
      break;

    }

    //libera a memória das imagens criadas
    imagedestroy($novaimagem);
    imagedestroy($origem);
  }

}

?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Upload de Imagem</title>
</head>
<body>

	<form method='post' enctype='multipart/form-data'><br>
		<input type='file' id="image" name='image' value='Cadastrar foto'>
		<input type='submit' name='enviar'>
	</form>

	<?php
	include "_appadmin/ajax/funcImage.php";

	if ( (isset($_POST['enviar'])) && (!empty($_FILES['image'])) ) {

		 Image($_FILES['image'], 1680, 1000, "fotos/");

		 echo salvar();
	}

	?>


</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso aqui não faz sentido:

<?php
....
function redimensionar($imgLarg, $imgAlt, $tipo, $img_localizacao){
    //descobrir novo tamanho sem perder a proporcao
    if ( $imgLarg > $imgAlt ){
      $novaLarg = $this->maxWidth;
      .....

Repare que a função 'redimensionar' por nenhum momento recebe o parâmetro: maxWidth. 

E como não é um método, não existe o escopo do $this.

 

 

Ao utilizar funções não se pode usar o $this.

 

Recomendo a leitura de como criar uma função:

https://secure.php.net/manual/pt_BR/functions.arguments.php

 

e um pouco sobre O.O. já que ocorre a necessidade de trasnformar O.O. -> Estruturado.

http://php.net/manual/pt_BR/language.oop5.basic.php

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você apenas retirou o $this vai continuar dando erro. (variavel não existe).

 

 

Você precisa passar ela por parâmetro brother.

Chegou a ler?

https://secure.php.net/manual/pt_BR/functions.arguments.php

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.