Symfony nhận tham số trong dịch vụ

Plugin Symfony cung cấp khả năng hoàn thiện và điều hướng mã cho các dịch vụ và tham số đã được đăng ký với bộ chứa dịch vụ Symfony và hỗ trợ bạn đăng ký những dịch vụ mới

Tính năng hoàn thành và điều hướng cho các dịch vụ cũng có sẵn trong YAMLXML configuration files.

Hoàn thành mã cho các dịch vụ Symfony

Trong trình chỉnh sửa, nhấn Ctrl+Space để gọi hoàn thành mã và thực hiện bất kỳ thao tác nào sau đây

  • Truy xuất dịch vụ đã đăng ký từ vùng chứa dịch vụ

  • Hoàn thành tên phương thức cho dịch vụ khởi tạo

  • Tìm nạp các tham số đã đăng ký được tìm nạp từ vùng chứa dịch vụ

Điều hướng mã cho các dịch vụ

Để điều hướng đến phần khai báo của một dịch vụ, đặt dấu mũ ở vị trí sử dụng dịch vụ đó và nhấn Ctrl+B. Ngoài ra, Ctrl + Nhấp vào cách sử dụng

Lệnh Điều hướng đến phần khai báo cũng sẽ cho phép bạn điều hướng giữa việc triển khai dịch vụ và tuyến đường đăng ký dịch vụ đó. Ví dụ: bạn có thể chuyển từ lớp Filesystem sang lớp dịch vụ. xml tệp trong đó lớp được đăng ký. Từ đó, bạn có thể điều hướng quay lại triển khai dịch vụ đã đăng ký hoặc cách sử dụng dịch vụ.

Kiểm tra mã cho các dịch vụ

Plugin Symfony cung cấp một số kiểm tra để phát hiện lỗi trong

  • Khi bạn sử dụng một dịch vụ chưa được đăng ký với vùng chứa dịch vụ, PhpStorm sẽ hiển thị cảnh báo tương ứng từ quá trình kiểm tra Dịch vụ bị thiếu . .

  • Khi bạn đăng ký một dịch vụ đã được đăng ký với vùng chứa dịch vụ, PhpStorm sẽ hiển thị cảnh báo tương ứng từ quá trình kiểm tra Dịch vụ trùng lặp . .

Đăng ký dịch vụ

Các dịch vụ thường được đăng ký với vùng chứa dịch vụ bằng cách thêm các bản ghi tương ứng vào YAML hoặc . Ví dụ: để đăng ký tiện ích mở rộng configuration file. For example, to register a Twig với bộ chứa dịch vụ, bạn có thể thêm bản ghi sau.

dịch vụ. blogger_blog. cành cây. sự mở rộng. lớp. Các thẻ Blogger\BlogBundle\DependencyInjection\BloggerBlogExtension. - { Tên. cành cây. sự mở rộng }

Một bản ghi đăng ký dịch vụ, ở mức tối thiểu, bao gồm tên của dịch vụ và lớp triển khai dịch vụ đó. Ngoài ra, nó thường chứa các lệnh cho các tham số sẽ được cung cấp bởi vùng chứa dịch vụ khi khởi tạo dịch vụ

Trong các phiên bản cũ hơn của Symfony, chúng tôi thường xác định các tham số không thay đổi trên máy triển khai bên trong tệp config.yml

# app/config/config.yml
# ...

parameters:
    locale: en

framework:
    # ...

    # any string surrounded by two % is replaced by that parameter value
    default_locale:  "%locale%"

# ...

Tuy nhiên, trong Symfony 4, rất nhiều biến có thể được sử dụng ở đây đã chuyển sang tệp env hoặc những biến không thay đổi trên máy triển khai, bên trong tệp services.yaml. Đối với nhiều nhà phát triển mới trên phiên bản khung này, thường không rõ cách truy xuất các tham số đó ở những nơi phổ biến nhất của dự án như Bộ điều khiển và Dịch vụ

Trong bài viết ngắn này, chúng tôi sẽ giải thích cho bạn cách truy xuất dễ dàng các tham số đó từ bên trong bộ điều khiển và dịch vụ một cách dễ dàng

1. Đảm bảo autowire được bật và bạn có một số thông số

Để sử dụng cách truy xuất tham số mặc định từ tệp services.yaml của bạn, bạn cần đảm bảo rằng các thuộc tính autowire và autoconfigure được bật trong dự án của mình, bạn có thể kiểm tra xem nó có được bật trong cùng tệp services.yaml nơi bạn có thể xác định tham số cho

# app/config/services.yaml

# Some retrievable parameters
parameters:
    uploads_directory: '%kernel.project_dir%/public/uploads'
    download_directory: '%kernel.project_dir%/public/downloads'

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

Biết rằng các thuộc tính này đã được bật và bạn có một số tham số X cần lấy từ dịch vụ hoặc bộ điều khiển, bạn đã sẵn sàng thực hiện bước tiếp theo

2. Lấy thông số trong Bộ điều khiển

Từ bên trong bộ điều khiển, bạn sẽ có thể lấy các tham số, tự động đưa vào ParameterBagInterface, một tiện ích được triển khai bởi các đối tượng quản lý các tham số vùng chứa dịch vụ. Bạn có thể chỉ cần bao gồm Tham sốBagInterface và bắt nó làm đối số trong phương thức của bộ điều khiển nơi bạn cần lấy một số tham số như được hiển thị trong ví dụ sau

Chủ Đề