Để chính xác cho câu hỏi của bạn: không có sự khác biệt trong việc thực hiện nội bộ.
Nhưng như một cách thực hành tốt nhất , bạn nên sử dụng $this->t
thay vì toàn cầu t
bất cứ khi nào có thể. Nếu bạn kiểm tra chức năng, t
sẽ trả về một đối tượng TranslatizableMarkup mới .
Nếu lớp của bạn nói $this->t
không được xác định, bạn có thể thêm StringTranslationTrait để thêm hành vi hoặc thêm nó làm phụ thuộc.
Sử dụng đặc điểm này sẽ thêm các phương thức t () và formatPlural () vào lớp. Chúng phải được sử dụng cho mọi chuỗi có thể dịch, tương tự như cách mã thủ tục phải sử dụng các hàm toàn cầu t () và \ Drupal :: dịch () -> formatPlural (). Điều này cho phép các công cụ trích xuất chuỗi để tìm các chuỗi có thể dịch.
Nếu lớp có khả năng tiêm dịch vụ từ container, nó sẽ tiêm dịch vụ 'string_translation' và gán nó cho $ this-> stringTranslation.
Vì vậy, như một quy tắc thực hành tốt nhất, bạn thường không muốn trộn quy trình trong OOP trừ khi hoàn toàn không thể tránh khỏi (ví dụ: các hàm PHP gốc).