PHP Deprecated: Non-static method should not be called statically in

0

Can anyone help?

I'm getting this error while running a routine.

  Deprecated: Non-static method TTranslation :: Translate () should not be called statically in C: \ wamp64 \ www \ Book \ app.widgets \ TTranslation.class.php on line 105

transp.php

<?php    
/*
 * Inclui a classe TTranslation
 */
include_once 'app.widgets/TTranslation.class.php';

/*
 * Define a linguagem como português
 */
TTranslation::setLanguage('pt');
echo "Em Português:<br>\n";

/*
 * Imprime palavras traduzidas
 */
echo _t('Function') . "<br>\n";
echo _t('Table') . "<br>\n";
echo _t('Tool') . "<br>\n";

/*
 * Define a linguagem como italiano
 */
TTranslation::setLanguage('it');
echo "Em Italiano:<br>\n";
// imprime palavras traduzidas
echo _t('Function') . "<br>\n";
echo _t('Table') . "<br>\n";
echo _t('Tool') . "<br>\n";
?>

TTranslation.class.php

<?php
/**       
 * classe TTranslation
 * classe utilitária para tradução de textos
 */
class TTranslation
{
    private static $instance;   // instância de TTranslation
    private $lang;              // linguagem destino

    /**
     * método __construct()
     * instancia um objeto TTranslation
     */
    private function __construct()
    {
        $this->messages['en'][] = 'Function';
        $this->messages['en'][] = 'Table';
        $this->messages['en'][] = 'Tool';
        $this->messages['pt'][] = 'Função';
        $this->messages['pt'][] = 'Tabela';
        $this->messages['pt'][] = 'Ferramenta';
        $this->messages['it'][] = 'Funzione';
        $this->messages['it'][] = 'Tabelle';
        $this->messages['it'][] = 'Strumento';
    }

    /**
     * método getInstance()
     * retorna a única instância de TTranslation
     */
    public static function getInstance()
    {
        // se não existe instância ainda
        if (empty(self::$instance))
        {
            // instancia um objeto
            self::$instance = new TTranslation;
        }
        // retorna a instância
        return self::$instance;
    }

    /**
     * método setLanguage()
     * define a linguagem a ser utilizada
     * @param $lang = linguagem (en,pt,it)
     */
    public static function setLanguage($lang)
    {
        $instance = self::getInstance();
        $instance->lang = $lang;
    }

    /**
     * método getLanguage()
     * retorna a linguagem atual
     */
    public static function getLanguage()
    {
        $instance = self::getInstance();
        return $instance->lang;
    }

    /**
     * método Translate()
     * traduz uma palavra para a linguagem definida
     * @param $word = Palavra a ser traduzida
     */
    public function Translate($word)
    {
        // obtém a instância atual
        $instance = self::getInstance();
        // busca o índice numérico da palavra dentro do vetor
        $key = array_search($word, $instance->messages['en']);
        // obtém a linguagem para tradução
        $language = self::getLanguage();
        // retorna a palavra traduzida
        // vetor indexado pela linguagem e pela chave
        return $instance->messages[$language][$key];
    }
} // fim da classe TTranslation

/**
 * método _t()
 * fachada para o método Translate da classe Translation
 * @param $word = Palavra a ser traduzida
 */
function _t($word)
{
    return TTranslation::Translate($word);
}
?>
    
asked by anonymous 21.06.2018 / 04:08

1 answer

1

The problem is a warning that the function is not static :

function _t($word)
{
    return TTranslation::Translate($word);
}

In this way that you called the function Translate() it represents a static function, there are two options to resolve this warning:

The first is to call the function as non-static:

function _t($word)
{
    return TTranslation->Translate($word);
}

The second is to transform the function Translate() into static :

static function Translate($word)
{
    // obtém a instância atual
    $instance = self::getInstance();
    // busca o índice numérico da palavra dentro do vetor
    $key = array_search($word, $instance->messages['en']);
    // obtém a linguagem para tradução
    $language = self::getLanguage();
    // retorna a palavra traduzida
    // vetor indexado pela linguagem e pela chave
    return $instance->messages[$language][$key];
}
    
21.06.2018 / 13:20