Если быть точным по вашему вопросу: нет разницы во внутренней реализации.
Но, как лучшая практика , вы должны использовать $this->t
вместо глобальных t
везде, где это возможно. Если вы проверите функцию, t
возвращает новый объект TranslateableMarkup .
Если ваш класс говорит, что $this->t
он не определен, вы можете добавить StringTranslationTrait, чтобы добавить поведение или внедрить его как зависимость.
Использование этой черты добавит в класс методы t () и formatPlural (). Они должны использоваться для каждой переводимой строки, подобно тому, как процедурный код должен использовать глобальные функции t () и \ Drupal :: translation () -> formatPlural (). Это позволяет инструментам извлечения строк находить переводимые строки.
Если класс способен внедрять сервисы из контейнера, он должен внедрить сервис 'string_translation' и назначить его для $ this-> stringTranslation.
Так что, как правило, вы не хотите смешивать процедурный процесс внутри ООП, если это совершенно не неизбежно (например, функции PHP).