Untuk lebih tepatnya pada pertanyaan Anda: tidak ada perbedaan dalam implementasi internal.
Tetapi sebagai praktik terbaik , Anda harus menggunakan $this->t
alih-alih global t
sedapat mungkin. Jika Anda memeriksa fungsinya, t
mengembalikan objek TranslateableMarkup baru .
Jika kelas Anda mengatakan $this->t
tidak didefinisikan, Anda bisa menambahkan StringTranslationTrait untuk menambahkan perilaku atau menyuntikkannya sebagai dependensi.
Menggunakan sifat ini akan menambahkan metode t () dan formatPlural () ke kelas. Ini harus digunakan untuk setiap string yang dapat diterjemahkan, mirip dengan bagaimana kode prosedural harus menggunakan fungsi global t () dan \ Drupal :: translation () -> formatPlural (). Ini memungkinkan alat ekstraktor string untuk menemukan string yang dapat diterjemahkan.
Jika kelas mampu menyuntikkan layanan dari wadah, itu harus menyuntikkan layanan 'string_translation' dan menetapkannya ke $ this-> stringTranslation.
Jadi sebagai aturan praktik terbaik, Anda umumnya tidak ingin mencampur prosedural dalam OOP kecuali benar-benar tidak dapat dihindari (misalnya fungsi PHP asli).