Mỗi ứng dụng là hiện thực của mẫu thiết kế Service Locators. Mỗi ứng dụng sẽ chứa các thành phần
được gọi là thành phần ứng dụng giúp cung cấp các dịch vụ cho các tiến trình xử lý. Chẳng hạn,
thành phần urlManager
đảm nhiệm chức năng cho bộ định tuyến cho các yêu cầu xử lý tới các bộ điều khiển;
thành phần db
cung cấp các dịch vụ để giao tiếp với cơ sở dữ liệu (CSDL); và các thành phần khác.
Mỗi thành phần ứng dụng đều có một định danh ID giúp xác định thành phần duy nhất trong cùng một ứng dụng . Bạn có thể truy cập vào các thành phần ứng dụng qua câu lệnh sau.
\Yii::$app->componentID
Ví dụ, sử dụng câu lệnh \Yii::$app->db
để lấy thông tin kết nối tới CSDL,
và câu lệnh \Yii::$app->cache
để lấy thông tin primary cache đã đăng ký trong ứng dụng.
Mỗi thành phần ứng dụng được tạo một lần và được truy cập trong ứng dụng. Và có bất kỳ sự truy cập nào sau đó đều trả về cùng một thể hiện của thành phần đó.
Bất kỳ đối tượng nào cũng có thể là thành phần ứng dụng. Bạn có thể đăng ký chúng bằng việc thiết lập các thuộc tính yii\base\Application::$components vào trong mục cấu hình ứng dụng. Ví dụ,
[
'components' => [
// Dung class để đăng ký thành phần "cache"
'cache' => 'yii\caching\ApcCache',
// Dùng mảng các tham số để đăng ký thành phần "db"
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=demo',
'username' => 'root',
'password' => '',
],
// Dùng hàm để đăng ký thành phần "search"
'search' => function () {
return new app\components\SolrService;
},
],
]
Lưu ý: Bạn cần đăng ký các thành phần ứng dụng một cách cẩn thận. Các thành phần ứng dụng cũng như các biến có phạm vi toàn cục. Sử dụng quá nhiều các thành phần ứng dụng có thể khiến mã nguồn khó kiểm tra và bảo trì. Cách tốt nhất, bạn nên khởi tạo các thành phần ở phạm vi cục bộ và khi cần thiết có thể thêm vào ứng dụng.
Như đề cập ở trên, các thành phần ứng dụng chỉ được khởi tạo khi nó được truy cập vào lần đầu tiên. Nếu thành phần không được truy cập tại các yêu cầu xử lý, thì sẽ không được khởi tạo. Tuy vậy , thỉnh thoảng, các thành phần ứng dụng có thể được khởi tạo ở mỗi yêu cầu, thậm chí nó không được truy cập. Để làm được như vậy, bạn cần liệt kê các định danh vào trong thuộc tinh bootstrap của ứng dụng application.
Ví dụ, thông tin cấu hình sau sẽ chắc chắn rằng thành phần log
luôn luôn được tải:
[
'bootstrap' => [
'log',
],
'components' => [
'log' => [
// Các thiết lập cho thành phần "log"
],
],
]
Yii định nghĩa danh sách các thành phần ứng dụng chính cùng với nó là các định danh và thông tin cấu hình. Ví dụ, thành phần request được dùng để lấy thông tin về các yêu cầu từ user và xác minh rồi gửi tới các bộ định tuyến (route); thành phần db có chức năng thiết lập các kết nối và thông qua đó bạn có thể thực hiện các truy vấn vào CSDL. Như vậy, các thành phần ứng dụng sẽ giúp ứng dụng Yii tiếp nhận các yêu cầu từ user.
Phần dưới là danh sách các thành phần ứng dụng chính được xác định trước. Bạn cần phải cấu hình và tùy biến chúng như những thành phần ứng dụng khác. Mỗi khi bạn cấu hình các thành phần này, nếu bạn không xác định các class, thì giá trị mặc định sẽ được dùng.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.