Para ser exato em sua pergunta: não há diferença na implementação interna.
Mas como prática recomendada , você deve usar em $this->t
vez do global t
sempre que possível. Se você marcar a função, t
está retornando um novo objeto TranslateableMarkup .
Se sua classe diz que $this->t
não está definido, você pode adicionar o StringTranslationTrait para adicionar o comportamento ou injetá-lo como uma dependência.
O uso dessa característica adicionará os métodos t () e formatPlural () à classe. Eles devem ser usados para todas as seqüências traduzíveis, semelhante a como o código processual deve usar as funções globais t () e \ Drupal :: translation () -> formatPlural (). Isso permite que as ferramentas do extrator de strings encontrem strings traduzíveis.
Se a classe for capaz de injetar serviços do contêiner, ela deve injetar o serviço 'string_translation' e atribuí-lo a $ this-> stringTranslation.
Portanto, como regra de boas práticas, geralmente você não deseja misturar procedimentos no OOP, a menos que seja totalmente inevitável (por exemplo, funções nativas do PHP).