Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com o "strtr"


Wilson Tamarozzi Jr.

Pergunta

Ola a todos,

Estou com um Hiper problema, montei uma classe apenas para tratar string como, tirar acentos e caracteres especiais, transformar string em minuscula.

tudo isso para poder criar um diretorio, o problema é o seguinte, na hora de joga a variavel de retorno na endereço para ele verificar se já existe o diretorio da um erro sinistro.

Antes de tudo, foi eu que montei tudo, mas o comando "strtr" sou iniciante nesse comando, se eu tiver fazendo algo errado, me ajudem porfavor, obrigado :)

o erro é

SCREAM: Error suppression ignored for

( ! ) Catchable fatal error: Object of class trata_string could not be converted to string in C:\wamp\www\banco_imagens\controllers\categorias_imagens.php on line 46

linha 46 seria

mkdir(UPLOAD_DIR .DS. IMAGENS_DIR .DS. $categoria_nome_tratada ,7777);
categorias_imagens.php
public static function insere()
    {
        //recebe nome da categoria pelo METHOD POST
        $categoria_nome = $_POST['categoria_nome'];
        
        //instancia class trata_string
        require_once (LIBRARY_DIR .DS. 'trata_string' .DS. 'trata_string.php');
        $categoria_nome_tratada = new trata_string();
        
        //chama metodo remove_acentos da classe trata_string
        $categoria_nome_tratada -> remove_acentos($categoria_nome);
        
        //verifia se a pasta já existe
        if (is_dir('$categoria_nome_tratada'))
        {
            return false;
        }
        else
        {
            //comando para criar pasta da categoria
            mkdir(UPLOAD_DIR .DS. IMAGENS_DIR .DS. $categoria_nome_tratada ,7777);
            
            $sql_insere = "INSERT INTO " .TB_CATEGORIAS_IMAGENS. " 
                            (
                            " .CATEGORIA_ID. " ,
                            " .CATEGORIA_NOME. "
                            )
                            VALUES (
                            NULL ,
                            '" .$categoria_nome. "'
                            )";
                            
            $instancia = new manipula_sql();
            
            $instancia -> insere($sql_insere);
            
            if ($instancia -> content === true)
            {
                return true;    
            }
            else
            {
                return false;
            }
        }
    }
trata_string.php
class trata_string
{
    public function remove_acentos($palavra)
    { 
          $palavra_correta =  strtr($palavra, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_");

          return $palavra_correta;
    }
    
    public function letra_minuscula($palavra)
    {
        $palavra = strtolower($palavra);
        
        return $palavra;        
    }
}

Editado por Wilson Tamarozzi Jr.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Wilson,

Ao utilizar a função mkdir, você está concatenando o objeto $categoria_nome_tratada.

Para resolver, você pode fazer a chamada do método remove_acentos() ao concatenar

//comando para criar pasta da categoria
            mkdir(UPLOAD_DIR .DS. IMAGENS_DIR .DS. $categoria_nome_tratada-> remove_acentos($categoria_nome) ,7777);
Ou você atribui o retorno do método remove_acentos() à uma variável e depois concatena
$nome_verificado =  remove_acentos($categoria_nome);
 mkdir(UPLOAD_DIR .DS. IMAGENS_DIR .DS. $nome_verificado ,7777);
Existem outros meios, como por exemplo utilizar o método mágico __toString(), desta forma:
class trata_string
{

    protected $palavra;

    public function remove_acentos($palavra)
    { 
          $palavra_correta =  strtr($palavra, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_");

          $this->palavra = $palavra_correta;
    }
    
    public function letra_minuscula($palavra)
    {
        $palavra = strtolower($palavra);
        
        return $palavra;        
    }

    public function __toString() {
          return $this->palavra;
    }
}
Ai sim, iria funcionar do jeito que você está fazendo;
//comando para criar pasta da categoria
            mkdir(UPLOAD_DIR .DS. IMAGENS_DIR .DS. $categoria_nome_tratada ,7777);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...